Array 方法

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()

作用:将一个或多个元素添加到数组头

返回值:新数组的长度

转载于:https://juejin.im/post/5a3ca13a6fb9a0450f2220b8

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值