对不存在的数组索引使用concat
Using concat on non-existing index of array
因此,如果index不存在于数组
中,下面的代码将抛出undefined注意:它是数组的数组
arr[index] = arr[index].concat(data);
最后我用check
修复了它if (!array[index]) {
array[index]=[];
}
解决了这个问题。
问题:是否有任何JavaScript技巧可以更容易地解决这个问题(更少的代码行,没有检查,无论什么)?
您可以使用||
操作符:
arr[index] = (arr[index] || []).concat(data);
检查arr[index]
是否为真值(不是null
、undefined
、NaN
、""
和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]
是否为真。
相关文章:
- 名称输入的索引
- 在jQuery中获取表的行索引
- 测试索引值是否等于某个数字的倍数
- 循环遍历数组中的特定索引
- 按照选项卡索引的顺序循环一个jQuery选择
- 在JavaScript中通过索引从对象数组中获取值
- 尝试在PHP中回显输入文本时出现未定义的索引错误
- 在索引.html和应用.js [node.js] 之间共享变量
- 如何为高图中的区域线创建z索引
- 下拉列表在使用z索引放置在前面后停止工作
- 减去两个索引不同但值相同的整数
- 如何通过所选索引(AngularJS)在模态弹出窗口中显示数据
- Javascript:根据对象的嵌套数组中的值,在数组中查找对象的索引
- 用javascript查询lucene索引
- 使用它更新集合中的嵌套数组's索引
- 如何将ng选项的索引作为angularJs中的值传递给模型
- Javascript获取所有锚链接的索引
- 多维关联数组的最后一个索引
- 传递给 PHP 表单时 JavaScript 动态变量上的未定义索引
- 对不存在的数组索引使用concat