【问题标题】:How to add a new object (key-value pair) to an array in javascript?如何在javascript中向数组添加新对象(键值对)?
【发布时间】:2013-09-28 02:02:51
【问题描述】:

我有一个数组:

items=[{'id':1},{'id':2},{'id':3},{'id':4}];

我应该如何向数组中添加一对新的{'id':5}

【问题讨论】:

  • 感谢@NDM 的评论。我在 jsfiddle 上尝试了一些代码并且它正在工作(使用 items.push({'id':5})....)但是当我使用相同的代码时,浏览器显示 {{item.id}} 而不是显示项目的更新值(我正在使用 angularjs btw)。我不知道为什么会这样。
  • OP 正在创建对象数组,而不是值数组。
  • Appending to array的可能重复

标签: javascript arrays key-value


【解决方案1】:

使用.push:

items.push({'id':5});

【讨论】:

  • 如何将它添加到数组中的特定位置?说在索引 3 处添加它
  • @separ1 arr[2] = "名称";
  • @Shmulik 这将替换位置 2 而不是将其添加到那里。你实际上想要 arr.splice(3, 0, {'id': 3})
【解决方案2】:

.push() 将元素添加到数组的末尾。

如果需要在数组的开头添加一些元素,请使用.unshift(),即:

items.unshift({'id':5});

演示:

items = [{'id': 1}, {'id': 2}, {'id': 3}, {'id': 4}];
items.unshift({'id': 0});
console.log(items);

如果您想在特定索引处添加对象,请使用.splice(),即:

items.splice(2, 0, {'id':5});
           // ^ Given object will be placed at index 2...

演示:

items = [{'id': 1}, {'id': 2}, {'id': 3}, {'id': 4}];
items.splice(2, 0, {'id': 2.5});
console.log(items);

【讨论】:

  • 请问如何添加 [{'id': 1,'newId': 'x' }, {'id': 2,'newId': 'y'}, {'id ': 3,'newId': 'z'}] ?
  • @Codenewbie 对不起,我没有得到你的问题。如果您能创建一些带有预期样本数据和预期输出的工作示例,那就太好了。
  • 当然,我会问
【解决方案3】:

有时.concat().push() 好,因为.concat() 返回新数组,而.push() 返回数组长度。

因此,如果您设置的变量等于结果,请使用.concat()

items = [{'id': 1}, {'id': 2}, {'id': 3}, {'id': 4}];
newArray = items.push({'id':5})

在这种情况下,newArray 将返回 5(数组的长度)。

newArray = items.concat({'id': 5})

然而,这里 newArray 将返回 [{'id': 1}, {'id': 2}, {'id': 3}, {'id': 4}, { 'id': 5}]。

【讨论】:

    【解决方案4】:

    ES6 的新解决方案

    默认对象

    object = [{'id': 1}, {'id': 2}, {'id': 3}, {'id': 4}];
    

    另一个对象

    object =  {'id': 5};
    

    对象赋值 ES6

    resultObject = {...obj, ...newobj};
    

    结果

    [{'id': 1}, {'id': 2}, {'id': 3}, {'id': 4}, {'id': 5}];
    

    【讨论】:

    • 请让你的回答更详细。解释它是如何工作的。
    • 我觉得应该是ary1 = [{'id': 1}, {'id': 2}];ary2 = [{'id': 3}];join = [...ary1,...ary2];
    【解决方案5】:

    如果你在做 jQuery,并且你有一个关于你的表单数据的 serializeArray 事情,例如:

    var postData = $('#yourform').serializeArray();
    
    // postData (array with objects) : 
    // [{name: "firstname", value: "John"}, {name: "lastname", value: "Doe"}, etc]
    

    ...你需要向这个数组添加一个具有相同结构的键/值,例如当发布到一个 PHP ajax 请求时:

    postData.push({"name": "phone", "value": "1234-123456"});
    

    结果:

    // postData : 
    // [{name: "firstname", value: "John"}, {name: "lastname", value: "Doe"}, {"name":"phone","value":"1234-123456"}]
    

    【讨论】:

      猜你喜欢
      • 2023-02-22
      • 1970-01-01
      • 2019-11-01
      • 2022-07-06
      • 2014-07-09
      • 1970-01-01
      • 1970-01-01
      • 2016-06-25
      • 2021-07-01
      相关资源
      最近更新 更多