javascript - 如何在 React 或 JavaScript 中更新嵌套对象的所有值
问题描述
更新嵌套字典的所有值的适当方法是什么。
假设我有这个对象:
someObj = {
0: {
message: 'Some text',
},
1: {
message: 'Other text',
},
}
如果我只需要更新对象上的第一条消息,我会执行以下操作:
someObj[0].message = 'New Message'
但我想要实现的是用一个特定的文本更新对象中的所有消息值。
实现上述目标的正确方法是什么?
解决方案
您可以尝试使用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
。
从这里运行比较:https ://jsbench.me/05khwctt9o
推荐阅读
- php - 如何在 nova laravel 中更改授权?
- azure - ConnectionStrings__AzureWebJobsStorage 有什么用?
- object-detection - yolov5 pytorch 是否使用不同的标签格式?
- go - 为什么我不能以这种方式读取请求正文?
- asp.net-mvc - 如何在 .Net Core 中获取客户端的公共 IP 地址?
- java - 分析JVM性能问题
- django - 文件字段未显示在 django admin 中弹出窗口的外键字段上
- sql-server - Crystal Reports SP26“数据库登录失败”
- angular - 我的 Mapbox 样式无法加载到我的 Angular 应用程序中
- haskell - 打印某些东西的递归函数