1. 伪数组:不是真正的数组,但可以使用数组的一些方法和属性
例如通过document.querySelector获取到的就是伪数组
将其转换成数组的方法:Array.from()
补充:数组和伪数组
2. 数组的方法
- shift():删除数组中第一个元素,并将长度减1. 返回被删除的元素
- pop():删除数组中最后一个元素,并将长度减1. 返回被删除的元素
unshift():往数组开头添加一个或多个数组元素,长度要改变,返回增加后数组的长度
push():往数组结尾添加一个或多个数组元素,长度要改变; 返回添加后数组的长度
concat() : 方法用于连接两个或多个数组, 不改变原数组。返回一个新的数组。var newData = arr1.concat(arr2)
reverse() 逆向排序;
include() 判断数组是否包含某个值,返回一个布尔值
join(“拼接符”)将数组转成字符串,中间以拼接符连接例如 &,常用于查询字符串(使用频率较高)
slice(start,end): 不修改原数组, 将原数组中的指定区域数据提取出来。
start开始 end结束。 如果参数是负值表示从倒数开始。不含结束位置
splice有以下几个使用方式:
删除:用于删除元素,两个参数,第一个参数(要删除第一项的位置),第二个参数(要删除的项数)
插入:向数组指定位置插入任意项元素。三个参数,第一个参数(开始位置),第二个参数(0),第三个参数(插入的项) !!!注意:第二个参数(0)为0不会删除任何项
替换:向数组指定位置插入任意项元素,同时删除任意数量的项,三个参数。第一个参数(起始位置),第二个参数(删除的项数),第三个参数(插入任意数量的项)
fill(value,start,end): 使用固定值来替换数组的元素,可用于数组的初始化,两个可选参数,表示填充的起始位置和结束位置
toString() 将数组转成字符串 属于一个对象的方法
String() 不属于数组这个对象,它是强制转换数据类型的方法
3. sort()方法:默认按字母和升序值将值作为字符串排列
如果数字按字符串排序,则 "25" 大于 "100" ,因为 "2" 大于 "1"。
正因为如此,sort() 方法在对数字进行排序时会产生不正确的结果。
官方解决办法:通过比较函数来解决 array.sort(compareFunction)
compareFunction:定义替代排序顺序的函数。该函数应返回负值、零值或正值,具体取决于参数,例如:
function(a, b){return a-b}
sort() 方法比较两个值时,将值发送给比较函数,根据返回的(负、零、正)值对值进行排序。
a - b 两数比较,如果是正数就交换位置,负数位置不变
var res=arr.sort(function(a,b){
returna-b
})//若是b-a则是降序排列
4. ES5新增的数组方法:
indexOf(data,start) 查找一个元素在数组中的位置,参数:[要查找的项和查找起点位置的索引(可选)],默认查找数组里面元素第一次出现的位置
foreach() :对数组进行遍历,对数组中每一项运行给定的函数,这个方法没有返回值
arr.forEach(function(item,index){console.log(item)})
map(callback) :会遍历当前数组,然后调用参数中的的方法,返回当前参数的返回值
map可以改变当前循环的值,返回一个新的被改变过的数组(map需要return),一般用来处理需要修改某一个数组的值
特点:一一对应,映射
filter()遍历和过滤。返回符合条件的元素的数组,在循环的时候判断是否为true
some(): 检测数组中的元素是否满足指定条件。如果有一个元素满足条件,则表达式返回true , 剩余的元素不会再执行检测。否则返回false
every(): 检测数组所有元素是否都符合指定条件。如果有一个不符合就返回false
for in 遍历对象for(var key in obj){}
5. 数组和字符串方法的区别总结:
数组和字符串共同的方法有slice、concat、indexOf、lastIndexOf。
数组转字符串方法为 join,字符串转数组方法为 split。
数组方法中会改变原数组的方法有:sort 、reverse、splice 。
数组方法中 slice 与 splice 的区别是:第一,第二个参数取值不同。前者是数组尾部的索引值,后者是要截取的元素个数。第二,是原数组返回的结果不同,前者不会改变原数组,后者原数组中只剩下未被删除的元素。
字符串方法中 slice、substring、substr 的区别是:第一, slice 既可用于字符串,也可以用于数组。第二,slice 与 substring 的第二个参数是要获取的尾部元素索引值。 而 substr 的第二个参数是要获取的元素个数。第三,substring 支持反向截取,比如 substring(5,2)表示截取2~5之间的字符串,而 slice 不支持。
注意点:
伪数组和数组之间的转换,querySelector提取出来的是伪数组
在jQuery中:each()方法:主要用来循环jquery对象或数组。
jquery对象.each( function(k,v) { } );v是一个DOM对象,需转化为jq对象 $(v),与js中不同