JS数组方法总结

200 阅读3分钟

1.Array.prototype.filter()

创建一个新数组,其包含通过所提供函数实现的测试的所有元素(其实也就是按回调函数传入的条件对数组进行过滤)

var ageArr = [32, 33, 12, 40];
var ageResult = ageArr.filter(item => item >= 30 ) // [32, 33, 40]

2.Array.prototype.foreach(item, index, array);

forEach() 方法用于调用数组的每个元素,并将元素传递给回调函数。

var arr = [1, 2, 3];
arr.forEach( (item, index, array) =>{
    console.log( "item: " + item  + "; index: " + index + " ; array: " + array + "\n")
} ); 
//item: 1; index: 0 ; array: 1,2,3
//item: 2; index: 1 ; array: 1,2,3
//item: 3; index: 2 ; array: 1,2,3

3.Array.prototype.map()

返回一个新数组,数组中的元素为原始数组元素调用函数处理后的值

var arr = [1, "ss", true];
arr.map( x => x + 2 ); // [3, "ss2", 3]

4.Array.prototype.some()

测试数组中的某些元素是否通过由提供的函数实现的测试。其实就是看数组里面有没有元素满足这个条件,只要有一个满足就返回true

var arr = [1, 2, 66, 88];
arr.some( value => value > 50 ); // 66大于50,找到一个满足条件的 返回 true
arr.some( value => value > 90 ); // 没有任何元素大于90,返回 false

5.Array.prototype.every()

测试数组的所有元素是否都通过了指定函数的检测。

var arr = [55, 66, 77, 88];
arr.every( value => (value > 40) ); //true
arr.every( value => (value < 40 )); //false

6.Array.prototype.indexOf(index, start)

该方法将从头到尾地检索数组,看它是否含有对应的元素。开始检索的位置在数组 start 处或数组的开头(没有指定 start 参数时)。如果找到一个 item,则返回 item 的第一次出现的位置。开始位置的索引为0。如果在数组中没找到指定元素则返回 -1。

var fruits=["Banana","Orange","Apple","Mango","Banana","Orange","Apple"];
var a = fruits.indexOf("Apple",4);  // 6

7.Array.prototype.includes()

判断一个数组是否包含一个指定的值

var arr = [55, 66, 77, 88];
arr.includes(66); //true
arr.includes(20); //false

8.Array.prototype.find() 和 Array.prototype.findIndex()

find()返回数组中满足提供的函数的第一个元素的值,不存在则返回undefined。

var arr = [55, 66, 77, 88];
arr.find( x=> ( x > 60 ) ); //66

findIndex()返回数组中满足提供的函数的第一个元素的下标值, 不存在则返回 -1。

var arr = [55, 66, 77, 88];
arr.findIndex( x=> ( x > 60 ) ); //1

9.Array.prototype.join()
将一个数组(或类数组)的所有元素连成一个字符串,默认以 ”,“连接

var arr = ['我', '累', '了'];
arr.join(); //我,累,了
arr.join(''); //我累了

10.Array.prototype.reverse()

数组数据倒置

var arr = ['了', '累', '我'];
arr.reverse(); //我,累,了

11.Array.prototype.sort()

数组排序

var arr = [1, 2, 5, 9, 3];
arr.sort((a,b) => a-b); //升序  [1, 2, 3, 5, 9]

12.Array.prototype.slice()

从开始到结束(不包括结束)选择的数组的一部分浅拷贝到一个新数组。

var arr = [1, 2, 5, 9, 3, {obj: '11'}];
arr.slice(3); //  [9, 3, {obj: '11'}]
arr.slice(6); //  []

13.Array.prototype.push()

在数组末尾加入一个元素。

var arr = [1, 2, 5, 9];
arr.push(3); //返回的是数组的长度 5
console.log(arr)  //  [1, 2, 5, 9, 3] 

14.Array.prototype.pop()

从数组中删除最后一个元素,并返回该元素的值。

var arr = [1, 2, 5, 9];
arr.pop(); //3
console.log(arr)  //  [1, 2, 5] 

15.Array.prototype.shift()

删除数组第一个元素并返回此元素。

var arr = [1, 2, 5, 9];
arr.shift(); // 1
console.log(arr)  //  [ 2, 5, 9] 

16.Array.prototype.unshift()

将1到n个元素添加到数组的开头。

var arr = [1, 2, 5, 9];
arr.unshift(2, 2 ,2); // 7
console.log(arr)  //  [2, 2 ,2, 1, 2, 5, 9] 

17.Array.isArray()

判断传入的参数是否是数组。

Array.isArray([1, 2, 3]); //true
Array.isArray('后悔'); //false

18.Array.from()

从一个类数组或可迭代对象中创建一个新的数组实例。

Array.from('我累了'); // ['我', '累', '了']
Array.isArray([2, 5, 7], x => x + x); // [4, 10, 14]