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

HP.*_*HP. 0 javascript arrays jquery 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);
Run Code Online (Sandbox Code Playgroud)

问题在于a声明时,它已经undefined索引0中出现了.我可以重新生成整个数组以删除所有undefined使用push.apply()但这似乎是不必要的开销.看到:

Javascript:如何根据项属性值删除数组项(JSON对象)?

两个问题:

  1. 是否有一种方法可以在初始化时concat覆盖索引0concat
  2. 或者有没有一种方法可以在concat不声明的情况下使用a = [{}]

epa*_*llo 5

你应该只是将它声明为一个空数组,不需要内部的空对象.

var a = [];
Run Code Online (Sandbox Code Playgroud)

在控制台中输出

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