数组在JavaScript中无处不在,ECMAScript6中引入了数组的扩展:数组的扩展。
此处我们来聊聊3个有用的数组技巧:
稀疏数组和密集数组
什么事稀疏数组?让我们来创建一个简单的稀疏数组:
const arr = new Array(4);
> a // [ ]
> a[0] // undefined
当你遍历它时,你会发现,它并没有元素.JavaScript(ES5)中的forEach(),filter(), every() 和some()都会跳过空位会跳过这些缝隙;map()会跳过空位,但会保留这个值。而ES6则明确规定把空位转为undefined。
const arr = new Array(4);
arr.map((elem, index) => index);
> a // [undefined, undefined, undefined, undefined]
我们可以使用Array.apply来解决这个问题:
const arr = new Array(4);
arr.map((elem, index) => index);
> a // [undefined, undefined, undefined, undefined]
上述创建的数组就是一个密集数组。
将一个空参数传递给一个方法
如果你像调用一个方法,并且把其中一个参数设置为空,JavaScript是会报错的:
> method('parameter1', , 'parameter3'); // Uncaught SyntaxError: Unexpected token ,
我们通常的处理方法是传递一个null或undefined进去:
method('parameter1', null, 'parameter3')
// 或者
method('parameter1', undefined, 'parameter3');
因为JavaScript把null视为一个对象,这是奇怪的。随着ES6中扩展运算符的引入,我们可以利用上诉稀疏数组的本质,将一个空参数传递给一个方法,如下:
method(...['parameter1', , 'parameter3']); // works!
唯一数组值
ES6 提供了新的数据结构 Set。它类似于数组,但是成员的值都是唯一的,没有重复的值。
const arr = [...new Set([1, 2, 3, 3])];
> arr // [1, 2, 3]
数组在JavaScript中无处不在,ECMAScript6中引入了数组的扩展:数组的扩展。
此处我们来聊聊3个有用的数组技巧:
稀疏数组和密集数组
什么事稀疏数组?让我们来创建一个简单的稀疏数组:
当你遍历它时,你会发现,它并没有元素.JavaScript(ES5)中的
forEach(),filter(),every()和some()都会跳过空位会跳过这些缝隙;map()会跳过空位,但会保留这个值。而ES6则明确规定把空位转为undefined。我们可以使用
Array.apply来解决这个问题:上述创建的数组就是一个密集数组。
将一个空参数传递给一个方法
如果你像调用一个方法,并且把其中一个参数设置为空,JavaScript是会报错的:
我们通常的处理方法是传递一个
null或undefined进去:因为JavaScript把
null视为一个对象,这是奇怪的。随着ES6中扩展运算符的引入,我们可以利用上诉稀疏数组的本质,将一个空参数传递给一个方法,如下:唯一数组值
ES6 提供了新的数据结构 Set。它类似于数组,但是成员的值都是唯一的,没有重复的值。