Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/83.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 未定义索引0的Concat JSON数组对象_Javascript_Jquery_Arrays_Json - Fatal编程技术网

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

Javascript 未定义索引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 + "

这是一个基本的问题,但我只是好奇一个优雅的方式做一些事情(我已经有了肮脏方式的解决方案)。下面的代码以空var
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!我犯了个愚蠢的错误。谢谢你,伙计。