因此,如果数组中没有索引
,则下面的代码会抛出undefined注意:它是数组数组
arr[index] = arr[index].concat(data);
最后我用支票
修好了它if (!array[index]) {
array[index]=[];
}
这解决了这个问题。
问题:是否有任何JavaScript技巧可以更轻松地解决这个问题(更少的代码行,没有检查,等等)?
答案 0 :(得分:1)
您可以使用||
oprator:
arr[index] = (arr[index] || []).concat(data);
它会检查arr[index]
是否为真值(不是null
,undefined
,NaN
,""
和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]
是否真实。