【问题标题】:Can't push to array in JavaScript无法在 JavaScript 中推送到数组
【发布时间】:2020-04-18 07:23:20
【问题描述】:

运行此代码时出现错误:

var array = [];

array.push(["one"]:[1,2,3]);
array.push(["two"]:[4,5,6]);

我希望我的数组最终看起来像这样: {"one": [1,2,3], "two": [4,5,6]};

我不知道如何解决这个错误,我想使用push

【问题讨论】:

  • 你所描述的期望结果不是一个数组,它是一个对象

标签: javascript


【解决方案1】:

Javascript 没有像其他语言那样的关联数组,但它有对象,这是相似的。

var object = {};

object.one = [1,2,3];

// or if the key name comes from a variable:

var key = "two";

object[key] = [4,5,6];

【讨论】:

    【解决方案2】:

    您必须首先创建对象,将值分配给对象,然后将其推送到数组中。有关更多信息,请参阅此帖子。 push object into array

    【讨论】:

      【解决方案3】:

      您应该选择以下内容。使用推送,您将无法获得所需的输出。

      let obj = {};
      
      const item1 = {
        ["one"]: [1, 2, 3]
      }
      const item2 = {
        ["two"]: [4, 5, 6]
      }
      
      obj = {
        ...obj,
        ...item1,
        ...item2
      }
      

      您收到错误的原因是因为您在推送 {} 中缺少对象包装符号

      array.push({["one"]:[1,2,3]});
      array.push({["two"]:[4,5,6]});
      

      但如前所述,这不会提供所需的输出:{"one": [1,2,3], "two": [4,5,6]};

      【讨论】:

        【解决方案4】:

        JavaScript 中的关联数组是一个对象,因此您不能使用 array.push,因为它在那里无效。你只需要:array["one"] = [1,2,3]

        【讨论】:

          【解决方案5】:
          var array = {};
          
          array.one = [123, 123];
          array.two = [123, 123];
          
          console.log(array)
          

          输出 { 一: [ 123, 123 ], 二: [ 123, 123 ] }

          【讨论】:

          • 将您的 var array = []; 更改为 var array = {};
          【解决方案6】:

          "one" 是一个对象而不是数组。从那里删除括号。见以下代码:

          array.push({"one":[1,2,3]});
          array.push({"two":[4,5,6]});
          

          【讨论】:

          • 我希望我的数组最终看起来像这样: {"one": [1,2,3], "two": [4,5,6]};不等于你的解决方案
          猜你喜欢
          • 1970-01-01
          • 2022-06-15
          • 2011-07-07
          • 1970-01-01
          • 2015-07-15
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2021-08-14
          相关资源
          最近更新 更多