1、Array.isArray( )
作用:判断参数是否为数组,是数组返回true,否则返回false
var arr = [1, 2, 3]
Array.isArray( arr ) // true
2、arr.valueOf( )
作用:返回数组本身
var arr = [1, 2, 3]
arr.valueOf( ) // [1, 2, 3]
3、arr.toString( )
作用:返回数组的字符串形式
var arr = [1, 2, 3]
arr.toString( ) // '1,2,3'
var arr1 = [1, 2, 3,[4,5,6]]
arr1.toString( ) // '1,2,3,4,5,6'
4、arr.push( )
作用:在数组的末端添加一个或多个元素,并返回添加新元素后的数组长度,该方法会改变原数组
var arr = [ 5]
arr.push(1,2,true,{ }) // 5
arr // [5,1,2,true,{ }]
5、arr.pop( )
作用:删除数组的最后一个元素,并返回该元素,该方法会改变原数组
var arr = [1,2,3,4]
arr.pop() // 4
arr // [1,2,3]
6、arr.unshift( )
作用:在数组的第一个位置添加一个或多个元素,并返回添加新元素后的数组长度,该方法会改变原数组
var arr = [6 ]
arr.unshift(1,2) // 3
arr // [1,2,6]
7、arr.shift( )
作用:删除数组的第一个元素,并返回该元素,该方法会改变原数组
var arr = [1,2,3,4,5]
arr.shift( ) // 1
arr // [2,3,4,5]
8、arr.join( )
作用:以指定参数作为分隔符,将所有数组成员连接为一个字符串返回,如果没有参数,默认用逗号分隔
var arr = [1,2,3,4]
arr.join( ' ' ) // '1 2 3 4'
arr.join( '|' ) // '1|2|3|4'
arr.join() // 1,2,3,4'
如果数组成员是undefined或null或空位,会被转成空字符串
[1,,3].join( '-' ) // '1- -3'
9、arr.concat( )
作用:用于多个数组的合并,返回一个新数组,原数组不变
[1,2,3].concat([4,5,6]) // [1,2,3,4,5,6]
[1].concat({a:1}) // [1,{a:1}]
[1].concat(4,5,6) // [1,4,5,6]
10、arr.reverse( )
作用:用于颠倒排列数组元素,返回改变后的数组,该方法将改变原数组
var arr = [1,2,3,4,5]
arr.reverse( ) // [5,4,3,2,1]
arr // [5,4,3,2,1]
11、arr.slice( )
作用:用于提取目标数组的一部分,返回一个新数组,原数组不变
它的第一个参数为起始位置(从0开始,包含该位置),第二个参数为终止位置(不包含该位置),如果省略第二个参数,则一直返回到原数组的最后一个成员
var arr = [1,2,3,4,5]
arr.slice( 0 ) // [1,2,3,4,5]
arr.slice( 1 ) // [ 2,3,4,5 ]
arr.slice( 1,2 ) // [ 2 ]
arr.slice( ) // [1,2,3,4,5]
arr.slice( -2 ) // [ 4,5 ]
arr.slice( -2,-1 ) // [ 4 ]
如果第一个参数大于等于数组长度,或者第二个参数小于第一个参数,则返回空数组
var arr = [1,2,3]
arr.slice(4) // [ ]
arr.slice(2,1) // [ ]
12、arr.splice( )
作用:删除原数组的一部分成员,并可以在删除的位置添加新的数组成员,返回值是被删除的元素,该方法会改变原数组
arr.splice(start,count,add1,add2,...)
splice的第一个参数是删除的起始位置(从0开始),第二个参数是被删除的元素个数,如果后面还有更多的参数,则表示这些就是要被插入数组的新元素
删除数组元素
var arr = [1,2,3,4,5,6,7]
arr.splice(4,2) // [5,6]
arr // [1,2,3,4,7]
删除并添加数组元素
var arr1 = [1,2,3,4,5,6,7]
arr1.splice(4,2,8,9) //[5,6]
arr1 // [1,2,3,4,8,9,7]
如果起始位置是负数,就表示从倒数位置开始删除
var arr1 = [1,2,3,4,5,6,7]
arr1.splice(-4,2,8,9) //[4,5]
arr1 // [1,2,3,8,9,6,7]
如果只是单纯的插入新元素可以将第二个参数设置为0
var arr = [1,2,3,4]
arr.splice(2,0,8,9) // [ ]
arr // [1,2,8,9,3,4]
如果只提供一个参数,表示将原来的数组在指定位置拆分成两个数组
var arr = [1,2,3,4,5,6,7]
arr.splice(3) // [4,5,6,7]
arr // [1,2,3]
13、arr.sort( )
作用:对数组成员进行排序
从小到大排列
var arr = [1,6,2,56,14,77,98]
arr.sort(function(a,b){
return a - b
}) // [1,2,6,14,56,77,98]
从大到小排列
var arr = [1,6,2,56,14,77,98]
arr.sort(function(a,b){
return b - a
}) // [98,77,56,14,6,2,1]
特殊用法:
[
{name:'aa',age:30},
{name:'bb',age:10},
{name:'cc',age:20}
].sort(function(a,b){
return a.age - b.age
})
// [
{name:'bb',age:10},
{name:'cc',age:20},
{name:'aa',age:30}
]
14、arr.map( )
作用:将数组的所有成员依次传入函数,然后把每一次的执行结果组成一个新数组返回,不改变原数组
三个参数:当前成员,当前索引,数组本身
var arr = [1,2,3]
arr.map(function(item,index,arr){
return n + 1
})
// [2,3,4]
arr // [1,2,3]
如果数组有空位,map方法的回调函数在这个位置不会执行,会跳过数组空位
map
方法不会跳过undefined
和null
,但是会跳过空位。
var fn = function (n){ return 'a' }
[1,undefined,2].map( fn ) // [ 'a', 'a', 'a']
[1,null,2].map( fn ) // [ 'a', 'a', 'a']
[1, ,2].map( fn ) // [ 'a', , 'a']
15、arr.forEach( )
作用:forEach方法和map方法相似,也是对数组的所有成员依次执行参数函数,但是,forEach方法不返回值,只用来操作数据,所以如果数组遍历的目的是为了得到返回值,就使用map方法,否则使用forEach方法
注意:forEach方法无法中断执行,总是会将所有成员遍历完,如果希望符合某种条件时,就中断遍历,要使用for循环
forEach方法不会跳过undefined
和null
,但是会跳过空位。
16、arr.filter( )
作用:用于过滤数组成员,满足条件的成员组成一个新的数组返回,不改变原数组
var arr = [1,2,3,4,5]
arr.filter(function(item,index,arr){
return item > 3
})
// [4,5]
17、arr.some( )
作用:如果有一个成员返回值是true,则整个some方法的返回值就是true,否则返回false
var arr = [1,2,3,4,5]
arr.some(function(item,index,arr){
return item > 3
})
// true
18、arr.every( )
作用:如果数组中的每一个成员返回值是true,则整个every方法的返回值才是true,否则返回false
var arr = [1,2,3,4,5]
arr.some(function(item,index,arr){
return item > 3
})
// false
注意:对于空数组,some方法返回false,every方法返回true,回调函数都不会执行
function fn (item){ return 1}
[ ].some( fn ) // false
[ ].every( fn ) // true
19、arr.reduce( )、arr.reduceRight( )
reduce方法和reduceRight方法依次处理数组的每个成员,最终累计为一个值,他们的差别是,reduce是从左到右处理(从第一个成员到最后一个成员),reduceRight则是从右到左(从最后一个成员到第一个成员),其它完全一样
[1,2,3,4,5].reduce(function(a,b){
return a + b
})
// 15
还可以设置第二个参数
[1,2,3,4,5].reduce(function(a,b){
return a + b
},10)
// 25
20、arr.indexOf( )、arr.lastIndexOf( )
indexOf方法返回给定元素在数组中第一次出现的位置,如果没有出现则返回-1
var arr = [1,2,3,4,5]
arr.indexOf( 1 ) // 0
arr.indexOf( 1 ) // -1
indexOf方法还可以接受第二个参数,表示搜索的开始位置
[1,2,3,4,5].indexOf(2,2) // -1
lastIndexOf方法返回给定元素在数组中最后一次出现的位置,如果没有出现则返回-1
var arr = [4,6,8,4,5]
arr.lastIndexOf( 4 ) // 3
arr.lastIndexOf( 7 ) // -1