为了账号安全,请及时绑定邮箱和手机立即绑定

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

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

拉丁的传说 2023-06-15 17:27:03
更新嵌套字典的所有值的合适方法是什么。假设我有这个对象:someObj = {  0: {    message: 'Some text',  },  1: {    message: 'Other text',  },}如果我只需要更新对象上的第一条消息,我会这样做:someObj[0].message = 'New Message'但我想要实现的是用一个特定的文本更新对象中的所有消息值。实现上述目标的正确方法是什么?
查看完整描述

3 回答

?
慕容708150

TA贡献1831条经验 获得超4个赞

您可以尝试使用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

请参阅下面的基准测试结果:

//img1.sycdn.imooc.com/648ad98f0001742306520248.jpg


查看完整回答
反对 回复 2023-06-15
?
GCT1015

TA贡献1827条经验 获得超4个赞

用一个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)


查看完整回答
反对 回复 2023-06-15
?
潇潇雨雨

TA贡献1833条经验 获得超4个赞

const keys = Object.keys(someObj);

for(let i = 0; i < keys.length; i++) {

  someObj[keys[i]].message = 'Your string';

}


查看完整回答
反对 回复 2023-06-15
  • 3 回答
  • 0 关注
  • 126 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信