0

这是一个基本问题,但我只是对做某事的优雅方式感到好奇(我已经有了肮脏方式的解决方案)。我有下面的代码以空 vara作为 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声明时,它已经出现undefined索引 0中。我可以重新生成整个数组以删除所有undefined使用push.apply(),但这似乎是不必要的开销。看:

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

两个问题:

  1. 有没有办法concat数组但覆盖初始索引 0concat
  2. concat或者有没有不声明的方式使用它a = [{}]
4

1 回答 1

5

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

var a = [];

在控制台中输出

> var a = [];
  undefined
> a = a.concat([{"a":"b1"},{"a":"b2"}]);
  [Object, Object]
于 2013-05-21T20:27:04.850 回答