Javascript 未定义索引0的Concat JSON数组对象
这是一个基本的问题,但我只是好奇一个优雅的方式做一些事情(我已经有了肮脏方式的解决方案)。下面的代码以空varJavascript 未定义索引0的Concat JSON数组对象,javascript,jquery,arrays,json,Javascript,Jquery,Arrays,Json,这是一个基本的问题,但我只是好奇一个优雅的方式做一些事情(我已经有了肮脏方式的解决方案)。下面的代码以空vara作为JSON数组开始。然后,我想稍后将更多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
作为JSON数组开始。然后,我想稍后将更多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中带有未定义的。我可以使用push.apply()
重新生成整个数组,以删除所有未定义的,但这似乎是不必要的开销。见:
两个问题:
是否有一种方法可以在concat
数组中覆盖初始concat
上的索引0
或者有没有一种方法可以使用concat
而不声明它a=[{}]
您应该将其声明为空数组,内部不需要空对象
var a = [];
控制台中的输出
> var a = [];
undefined
> a = a.concat([{"a":"b1"},{"a":"b2"}]);
[Object, Object]
您应该将其声明为空数组,内部不需要空对象
var a = [];
控制台中的输出
> var a = [];
undefined
> a = a.concat([{"a":"b1"},{"a":"b2"}]);
[Object, Object]
为什么不使用a=[]
?JavaScript中真的没有“JSON数组”这样的东西。它只是一个数组。而且数组“a”在索引0中没有未定义的;它有一个空对象。如果仅使用[]
声明数组,则其长度将为0。是否知道错误来自console.log行中的a[2]。a
?在这一点上,没有a[2]
。在调用console.log之前,没有错误。Ops!我犯了个愚蠢的错误。谢谢你,伙计。你为什么不使用a=[]
?JavaScript中真的没有“JSON数组”这样的东西。它只是一个数组。而且数组“a”在索引0中没有未定义的;它有一个空对象。如果仅使用[]
声明数组,则其长度将为0。是否知道错误来自console.log行中的a[2]。a
?在这一点上,没有a[2]
。在调用console.log之前,没有错误。Ops!我犯了个愚蠢的错误。谢谢你,伙计。