首页 > 解决方案 > 如何在 React 或 JavaScript 中更新嵌套对象的所有值

问题描述

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

假设我有这个对象:

someObj = {
  0: {
    message: 'Some text',
  },
  1: {
    message: 'Other text',
  },
}

如果我只需要更新对象上的第一条消息,我会执行以下操作:

someObj[0].message = 'New Message'

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

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

标签: javascriptreactjsalgorithmreact-nativeecmascript-6

解决方案


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

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

从这里运行比较:https ://jsbench.me/05khwctt9o


推荐阅读