1. Array.from(arrayLike, mapFn, thisArg)
作用:将类数组对象转换为数组对象
参数:
- arrayLike: 类数组对象
- manFn: 对数组中每个对象执行的回调函数
- thisArg: mapFn 的this对象
返回值:新数组对象
//对字符串进行转换,对Set, Map结构数据转换也是一样。
Array.from('foo') // ['f', 'o', 'o'];
//带回调的转换
Array.from('foo', x => x + 'a') // ['fa', 'oa', 'oa'];
复制代码
2. Array.isArray(obj)
作用:检测给定对象是否是Array
返回值:true or false
和 instanceof 的区别:可以跨iframe检测对象是否为Array,instanceof 则不可以跨iframe检测。
3. Array.of(...elements)
作用:将传递进来的参数按顺序生成数组
返回值:新数组对象
和 Array 的区别:Array.of(7)会返回[7],而Array(7)会返回长度为7,值都为undefined的数组。
4. Array.concat()
作用:合并数组
返回值:合并后的新数组对象,不会修改原数组
⚠️注意:如果数组中存在对象引用,那么新数组和原数组都会引用同一个对象,新数组引用对象的值改变也会影响到原数组。(浅拷贝)
var array1 = [1];
var array2 = [2];
var array3 = array1.concat(array2); // [1, 2];
// array1 [1]
// array2 [2]
var array4 = array3.concat(3); // [1, 2, 3];也可以将参数合并到数组中
复制代码
5. Array.entries()
作用:返回一个数组的迭代器对象
var iterator = [1, 2, 3].entries();
iterator.next(); // {value: Array(2), done: false}
iterator.next().value; // [1, 2]
iterator.next().value; // [2, 3]
iterator.next(); // {value: undefinde, done: true}
//或者用for...of 循环遍历迭代器对象
for(e of iterator){
console.log(e);
}
// [0, 1]
// [1, 2]
// [2, 3]
复制代码
6. Array.every(callback, thisArg)
作用:对数组中每一个元素执行回调函数,所有元素执行回调函数返回结果都为true则返回true,否则返回false。every不会修改原数组。
返回值:true or false
var passed = [1, 2, 3].every(function(item, index, array){
return item > 0;
});
// passed is true
复制代码
7. Array.filter(callback, thisArg)
作用:返回一个数组中所有通过回调函数执行的值。用法和every类似。
8. Array.find(callback, thisArg)
作用:返回数组中满足提供的测试函数的第一个元素的值。否则返回 undefined。
9. Array.forEach(callback, thisArg)
作用:对数组中的每一项应用callback,如果执行循环过程中删除了某个元素,会导致后续元素前移,执行forEach时不会创建一个副本,所以执行过程中如果删除数组元素可能导致意料之外的结果。不会修改原数组。
10. Array.includes(searchElem, fromIndex)
作用:判断数组中是否存在searchElem。fromIndex指从此处开始查找,如果为负值则改为 Array.length + fromIndex 处开始。
返回值:true or false
11. Array.indexOf(searchElem, fromIndex)
作用:查找某个元素在数组中的索引,如果不存在则返回-1。fromIndex如果为负值,如-1,则从倒数第一个位置开始查找。
12. Array.join(separator)
作用:将数组或类数组对象所有元素连接为字符串。separator为分隔符。如[1,2].join('*')返回 '1*2'
。分隔符默认为 ,
13. Array.keys()
作用:返回一个新的Array迭代器对象。包含数组中每个索引的键。注意:和entries区别,这里只会返回键,而entries返回的是键值对。
let arr = ["a", "b", "c"];
let iterator = arr.keys();
// undefined
console.log(iterator);
// Array Iterator {}
console.log(iterator.next());
// Object {value: 0, done: false}
console.log(iterator.next());
// Object {value: 1, done: false}
console.log(iterator.next());
// Object {value: 2, done: false}
console.log(iterator.next());
// Object {value: undefined, done: true}
复制代码
14. Array.map(callback, thisArg)
作用:对数组中每一个元素执行callback。该方法会创建一个数组副本。 map本身不修改原数组,但是在callback里面还是可以修改的。
15. Array.pop()
作用:删除数组最后一个元素并返回该元素。该方法会修改原数组
返回值:被删除的元素
16. Array.push()
作用:将一个或多个元素添加到数组末尾。该方法会修改原数组
返回值:新数组的长度
唯一的原生类数组(array-like)对象是 Strings,尽管如此,它们并不适用该方法,因为字符串是不可改变的。
17. Array.reduce(callback, initValue)
作用:对累加器和数组中的每一个元素应用函数
返回值:函数累计处理的结果
// accumulator : 累加器
// value: 数组中每一项的值
// index: 数组索引
// array: 原数组
// initValue: 累加器的初始值
var count = [1, 2, 3, 4].reduce(function(accumulator, value, index, array){}, initValue)
复制代码
注意:如果没有提供initialValue,reduce 会从索引1的地方开始执行 callback 方法,跳过第一个索引。如果提供initialValue,从索引0开始。
如果数组为空且没有提供initialValue,会抛出TypeError 。如果数组仅有一个元素(无论位置如何)并且没有提供initialValue, 或者有提供initialValue但是数组为空,那么此唯一值将被返回并且callback不会被执行。
var names = ['Alice', 'Bob', 'Tiff', 'Bruce', 'Alice'];
var countedNames = names.reduce(function (allNames, name) {
if (name in allNames) {
allNames[name]++;
}
else {
allNames[name] = 1;
}
return allNames;
}, {});
// countedNames is:
// { 'Alice': 2, 'Bob': 1, 'Tiff': 1, 'Bruce': 1 }
复制代码
18. Array.reverse()
作用:颠倒数组中元素的位置。该方法会修改原数组
返回值:返回该数组的引用
19. Array.shift()
作用:删除数组的第一个元素。该方法会修改原数组
返回值:删除元素的值。
如果数组长度为0,则返回undefined
19. Array.slice(begin, end)
作用:返回一个从开始到结束(不包括结束)选择的数组的一部分浅拷贝到一个新数组对象。该方法不会修改原数组
返回值:新数组的引用。
begin: 如果为负数,则表示从数组的倒数第几个元素开始。省略则为0;
end: 如果省略该参数则表示到数组最后一个元素。大于数组长度到数组最后一个元素。负数则为倒数第几个元素。
20. Array.some(callback, thisArg)
作用:测试数组中的某些元素是否通过由提供的函数实现的测试。
返回值:true or false
21. Array.sort(compareFunction)
作用:在适当的位置对数组的元素进行排序,并返回数组。 sort 排序不一定是稳定的。默认排序顺序是根据字符串Unicode码点。该方法会修改原数组
返回值:排序后的数组
compareFunction:自定义排序方法
compareFunction(a, b) < 0 // a排在b前面
compareFunction(a, b) = 0 // 位置不变(不保证每个浏览器都这样)
compareFunction(a, b) > 0 // a排在b后面
compareFunction(a, b) 必须总是对相同的输入返回相同的比较结果,否则排序的结果将是不确定的
复制代码
22. Array.splice(start, deleteCount, item1, item2, ...)
作用:通过删除现有元素和/或添加新元素来更改一个数组的内容。该方法会修改原数组
start:需要从这个位置开始删除元素
deleteCount:删除多少个元素
item1, item2, ... 在start位置后面插入这些元素
返回值:被删除元素组成的数组
23. Array.unshift()
作用:将一个或多个元素添加到数组头
返回值:新数组的长度