javascript - 返回带有使用扩展运算符修改的某些键的变异对象
问题描述
在下面的对象中,我想将 data[1] 的 val 的值增加 1,并且保持一切不变,我该如何实现呢?
const state =
{
"data": [{
"val": 1,
"other": 10
},
{
"val": 11,
"other": 100
},
{
"val": 100,
"other": 1000
}
]
}
我希望变异的对象是这样的-
{
"data": [{
"val": 1,
"other": 10
},
{
"val": 10,
"other": 100
},
{
"val": 100,
"other": 1000
}
]
}
我知道我可以像这样直接更改值state.data[1].val = state.data[1].val+1
,但是我想使用扩展运算符来实现相同的效果,是否可以使用扩展运算符来实现?像这样的东西-
const mutatedState = {
...state,
data: [...state.data]
}
解决方案
从对象中取出data
。并像这样使用
const state = { "data": [{ "val": 1, "other": 10 }, { "val": 11, "other": 100 }, { "val": 100, "other": 1000 } ] }
const {data} = state;
let res = {
...state,
data:[
data[0],
{...data[1],val:data[1].val+ 1},
...data.slice(2)
]
}
console.log(result)
推荐阅读
- markdown - Claat 正面信息框无法在 html 上正确显示
- swift - 在 TabView 中使用 NavigationView 时的警告日志,但在 iOS 14 中不起作用
- javascript - 为什么不同的 mousemove 事件具有相同的 XY 坐标?
- python - 如何获取所有页面的 URL?
- python - 单击按钮时向 Matplotlib 动画添加箭头
- c# - 使用 Ninject 和 MVVM 进行多重绑定和上下文绑定
- ruby-on-rails - 如何使用带 aws-rails-provisioner gem 的延迟作业或 sidekiq 为 Ruby on Rails 应用程序创建工作实例?
- mysql - K3s 节点不断失败,我不确定是什么原因造成的
- video - HTML5 视频颜色不准确
- javascript - 如何将我的收集器数据添加到变量中并在文件外部使用它?