如何在 React 或 JavaScript 中更新嵌套对象的所有值

更新嵌套字典的所有值的合适方法是什么。


假设我有这个对象:


someObj = {

  0: {

    message: 'Some text',

  },

  1: {

    message: 'Other text',

  },

}


如果我只需要更新对象上的第一条消息,我会这样做:


someObj[0].message = 'New Message'

但我想要实现的是用一个特定的文本更新对象中的所有消息值。


实现上述目标的正确方法是什么?


拉丁的传说
浏览 127回答 3
3回答

慕容708150

您可以尝试使用Object.keys(),请参阅文档:该Object.keys()方法返回给定对象自己的可枚举属性名称的数组,迭代顺序与普通循环相同。const someObj = { 0: { message: 'Some text', }, 1: { message: 'Other text', },}Object.keys(someObj)      .forEach(e => {         someObj[e].message = 'new_text'      })console.log(someObj)+1 超出范围的更新:@IsraGab 在评论部分提出了一个有趣的问题,为什么要在for..in.所以我查看了一些基准来比较这两种解决方案的速度。有趣的是,与这种情况相比,Object.keys().forEach()解决方案通常要快20%for..in。请参阅下面的基准测试结果:

GCT1015

用一个for in loop    for(let prop in object){       object[prop].message = 'Your string';   }someObj = {  0: {    message: 'Some text',  },  1: {    message: 'Other text',  },}for(let prop in someObj){someObj[prop].message = 'your string';}console.log(someObj)

潇潇雨雨

const keys = Object.keys(someObj);for(let i = 0; i < keys.length; i++) {&nbsp; someObj[keys[i]].message = 'Your string';}
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

JavaScript