在不存在的数组索引上使用concat

时间:2015-09-22 17:03:27

标签: javascript

因此,如果数组中没有索引

,则下面的代码会抛出undefined

注意:它是数组数组

arr[index] = arr[index].concat(data);

最后我用支票

修好了它
if (!array[index]) {
   array[index]=[];
}

这解决了这个问题。

问题:是否有任何JavaScript技巧可以更轻松地解决这个问题(更少的代码行,没有检查,等等)?

3 个答案:

答案 0 :(得分:1)

您可以使用|| oprator:

arr[index] = (arr[index] || []).concat(data);

它会检查arr[index]是否为真值(不是nullundefinedNaN""0)。

如果是,它将使用它,如果不是,它将使用[]连接到data

答案 1 :(得分:1)

在ES6中:

((a = []) => a.concat(data))(array[index])

但这归结为单纯的代码高尔夫,虽然它确实具有短几个字符的优势,如果[] array[index]默认将仅使用 缺少(未定义)。

答案 2 :(得分:0)

并非没有损害可读性:

array[index] = (array[index] ? array[index] : []).concat(data);

请注意这个以及使用||运算符的方法:

array[index] = (array[index] || []).concat(data);

在技术上不安全,因为他们检查array[index]是否真实。