这是一个基本问题,但我只是对一种优雅的做事方式感到好奇(我已经有脏方式的解决方案)。我有以下代码以空var a
作为JSON数组开始。然后我希望稍后将concat
更多JSON对象数组放入其中:
var a = [{}];
a = a.concat([{"a":"b1"},{"a":"b2"}]);
a.splice(0,1); // This does not work to remove index 0 of undefined
console.log(a[0].a + " " + a[1].a + " " + a[2].a);
问题是在a
声明时,它已经在索引0 中附带undefined
。我可以重新生成整个数组,使用undefined
删除所有push.apply()
,但这似乎是不必要的开销。参见:
Javascript: How to remove an array item(JSON object) based on the item property value?
两个问题:
concat
数组但覆盖初始concat
上的索引0 ?concat
而无需声明a = [{}]
?答案 0 :(得分:5)
您应该将其声明为空数组,不需要内部的空对象。
var a = [];
在控制台中输出
> var a = [];
undefined
> a = a.concat([{"a":"b1"},{"a":"b2"}]);
[Object, Object]