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

Using concat on non-existing index of array

本文关键字:concat 索引 数组 不存在      更新时间:2023-09-26

因此,如果index不存在于数组

中,下面的代码将抛出undefined

注意:它是数组的数组

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

最后我用check

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

解决了这个问题。

问题:是否有任何JavaScript技巧可以更容易地解决这个问题(更少的代码行,没有检查,无论什么)?

您可以使用||操作符:

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

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

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

在ES6中:

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

,但这归结为仅仅是代码高尔夫,虽然它的优点是它短了几个字符,如果缺少array[index](未定义),[]默认值将仅使用

在不影响可读性的情况下:

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

注意这个和使用||操作符的方法:

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

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