JavaScript学习笔记:ES6数组方法

ES6给数组添加了一些新特性,而这些新特性到目前为止完全可以运用到自己的业务层。在这一节中将总结有关于ES6给数组提供一些新特性的使用方法。

ES6提供的两个静态方法:

  • Array.from
  • Array.of

ES6提供操作、填充和过滤数组的方法:

  • Array.prototype.copyWidthin
  • Array.prototype.fill
  • Array.prototype.find
  • Array.prototype.findIndex

ES6中有关于数组迭代的方法:

  • Array.prototype.keys
  • Array.prototype.values
  • Array.prototype.entries
  • Array.prototype[Symbol.iterator]

接下来主要看看这些方法的使用。

Array.from()

Array.from()方法主要用于将两类对象(类似数组的对象[array-like object]和可遍历对象[iterable])转为真正的数组。

在ES5中常常使用下面这样的方法将一个类似数组的对象转换成一个数组:

function cast () {
    return Array.prototype.slice.call(arguments);
}

cast('a','b','c','d'); // ["a", "b", "c", "d"]

或者你也可以写成:

function cast () {
    return [].slice.call(arguments);
}

cast('a','b','c','d'); // ["a", "b", "c", "d"]

在ES6中可以使用Array.from将一个类似数组的对象转换为一个真正的数组。

所谓类似数组的对象,本质特征只有一点,即必须有length属性。因此,任何有length属性的对象都是类似数组对象,都可以通过Array.from方法将其转换成一个真正的数组。

let arrayLike = {
    '0': 'a',
    '1': 'b',
    '2': 'c',
    length: 3
}

console.log(Array.from(arrayLike)); // ["a","b","c"]

在ES6中,扩展运算符(...)也可以将某些数据结构转为数组。只不过它需要在背后调用遍历器接口Symbol.iterator

function cast (){
  return [...arguments]
}

cast('a','b','c'); // ["a","b","c"]

值得注意的是如果一个对象没有部署遍历器接口,使用扩展运算符是无法将类似数组对象转换成数组。

Array.from接受三个参数,但只有input是必须的:

  • input: 你想要转换的类似数组对象和可遍历对象
  • map: 类似于数组的map方法,用来对每个元素进行处理,将处理后的值放入返回的数组
  • context: 绑定map中用到的this

只要是部署了iterator接口的数据结构,Array.from都能将其转为数组:

let arr = Array.from('w3cplus.com')

console.log(arr); // ["w","3","c","p","l","u","s",".","c","o","m"]

let namesSet = new Set(['a', 'b'])
let arr2 = Array.from(namesSet) 

console.log(arr2); //["a","b"]

上面的代码,因为字符吕和Set结构都具有

剩余80%内容付费后可查看
* 请输入阅读码(忘记阅读码?

如需转载,烦请注明出处:https://www.w3cplus.com/javascript/es6-array-methods.html

如果文章中有不对之处,烦请各位大神拍正。如果你觉得这篇文章对你有所帮助,打个赏,让我有更大的动力去创作。(^_^)。看完了?还不过瘾?点击向作者提问!

赏杯咖啡,鼓励他创作更多优质内容!
返回顶部