没有索引0的Concat JSON数组对象未定义

时间:2013-05-21 20:22:57

标签: javascript jquery arrays json

这是一个基本问题,但我只是对一种优雅的做事方式感到好奇(我已经有脏方式的解决方案)。我有以下代码以空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?

两个问题:

  1. 是否可以使用concat数组但覆盖初始concat上的索引0
  2. 是否可以使用concat而无需声明a = [{}]

1 个答案:

答案 0 :(得分:5)

您应该将其声明为空数组,不需要内部的空对象。

var a = [];

在控制台中输出

> var a = [];
  undefined
> a = a.concat([{"a":"b1"},{"a":"b2"}]);
  [Object, Object]