【问题标题】:How to insert a new key value to the existing JSON object array?如何向现有的 JSON 对象数组插入新的键值?
【发布时间】:2019-12-04 02:34:05
【问题描述】:

我有下面的 JSON 数组,

const data = [{id:1,name:'a'},{id:2,name:'b'},{id:3,name:'c'}]

我必须为每个对象再插入一个属性,预期的结果会是这样。

const data = [{id:1,name:'a',selected:false},{id:2,name:'b',selected:false},{id:3,name:'c',selected:false}]

我正在尝试仅实现此 javascript。

请帮帮我。

【问题讨论】:

  • 太棒了!到目前为止,您尝试过什么?
  • 那不是 JSON……只是一个普通的对象字面量。
  • data.map(val=> ({...val,selected:false}))
  • 我试过这个.. data.map((x)=>{ x['selected']=false; })

标签: javascript arrays json lodash javascript-objects


【解决方案1】:

你只需要一个简单的循环。

for (let item of data) {
  item.selected = false;
}

在此循环的每次迭代中,item 成为迭代对象的下一项(在本例中为data)。由于数组仍然引用这些相同的对象,您可以修改item,并且此修改也出现在data...中的项目上,因为它是相同的对象。

【讨论】:

    【解决方案2】:

    这个问题没有达到 Stackoverflow 的标准,但是从您的 cmets 来看,我相信您正在认真寻找解决方案而不是您的声誉。

    答案是一种简单的老式方法,请参考并尝试一下。谢谢。

    const data = [{id:1,name:'a',selected:false},{id:2,name:'b',selected:false},{id:3,name:'c',selected:false}]
    
    data.forEach((element,index) => {
        element["selected"] = false,
            element["test"]=index+1 // any key-value pairs
    });
    
    console.log(data)

    【讨论】:

    • 对不起,我是 React 新手,其实我已经尝试过了。 const newState = this.state.data.map((x)=>{ x['selected']=false; }) 所以状态没有改变,newState 变得未定义。现在我已经分配给另一个变量,一旦修改,现在我正在使用 setState 来更新 newState。非常感谢...
    • @Cegone 抱歉,您提到“只有 JavaScript”,所以只有我发布了这个答案。谢谢。
    【解决方案3】:
    var data = [{id:1,name:'a'},{id:2,name:'b'},{id:3,name:'c'}];
    
    for (i = 0; i < data.length; i++) { 
       // add the addition property using dot notation
       data[i].selected = 'false';
    }
    
    // output to console the updated data
       console.log(data);
    

    【讨论】:

      猜你喜欢
      • 2020-03-30
      • 2018-04-07
      • 2021-10-26
      • 2014-09-26
      • 2019-11-01
      • 1970-01-01
      • 2021-11-15
      • 2020-07-27
      • 1970-01-01
      相关资源
      最近更新 更多