es6中新增的数组方法总结及举例

539 阅读2分钟

ES6 中新增的数组方法总结

在 ES6 中,为数组引入了一些非常实用的新方法,这些方法使得对数组的操作更加简洁、高效和强大。以下是对这些新增数组方法的详细介绍。

一、Array.from ()

描述:将两类对象转为真正的数组:类似数组的对象(array-like object)和可遍历(iterable)的对象(包括 ES6 新增的数据结构 Set 和 Map)。

示例

javascript

Copy

let arrayLike = { 0: 'a', 1: 'b', 2: 'c', length: 3 };
let arr = Array.from(arrayLike);
console.log(arr); // ['a', 'b', 'c']

二、Array.of ()

描述:用于将一组值转换为数组。无论传入多少个参数,Array.of()总是返回一个包含所有参数的新数组。

示例

javascript

Copy

let arr1 = Array.of(1, 2, 3);
console.log(arr1); // [1, 2, 3]

new Array()的区别在于,new Array(3)会创建一个长度为 3 的空数组,而Array.of(3)会创建一个只包含一个元素 3 的数组。

三、copyWithin ()

描述:在当前数组内部,将指定位置的成员复制到其他位置(会覆盖原有成员),然后返回当前数组。

示例

javascript

Copy

let arr2 = [1, 2, 3, 4, 5];
arr2.copyWithin(0, 3, 5);
console.log(arr2); // [4, 5, 3, 4, 5]

在这个例子中,从索引 3 开始到索引 5(不包括 5)的元素(即 4 和 5)被复制到索引 0 和 1 的位置,覆盖了原来的 1 和 2。

四、find () 和 findIndex ()

描述

  • find():用于找出第一个符合条件的数组成员,并返回该成员的值。

  • findIndex():用于找出第一个符合条件的数组成员的索引,如果没有符合条件的成员,则返回 -1。

示例

javascript

Copy

let arr3 = [1, 3, 5, 7, 9];
let result1 = arr3.find(item => item > 5);
let result2 = arr3.findIndex(item => item > 5);
console.log(result1); // 7
console.log(result2); // 3

五、fill ()

描述:使用给定值,填充一个数组。

示例

javascript

Copy

let arr4 = new Array(5).fill(0);
console.log(arr4); // [0, 0, 0, 0, 0]

let arr5 = [1, 2, 3];
arr5.fill(4, 1, 2);
console.log(arr5); // [1, 4, 3]

第二个例子中,从索引 1 开始到索引 2(不包括 2)的位置被填充为 4。

六、entries ()、keys () 和 values ()

描述

  • entries():返回一个新的 Array Iterator 对象,该对象包含数组中每个索引的键值对。

  • keys():返回一个新的 Array Iterator 对象,它包含数组中每个索引的键。

  • values():返回一个新的 Array Iterator 对象,它包含数组中每个索引的值。

示例

javascript

Copy

let arr6 = ['a', 'b', 'c'];
let iterator1 = arr6.entries();
console.log(iterator1.next().value); // [0, 'a']
console.log(iterator1.next().value); // [1, 'b']

let iterator2 = arr6.keys();
console.log(iterator2.next().value); // 0
console.log(iterator2.next().value); // 1

let iterator3 = arr6.values();
console.log(iterator3.next().value); // 'a'
console.log(iterator3.next().value); // 'b'

这些新增的数组方法为开发者在处理数组数据时提供了更多的便利和灵活性,大大提高了开发效率。