首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何同时更新数组中多个对象的值

如何同时更新数组中多个对象的值
EN

Stack Overflow用户
提问于 2022-02-24 05:38:19
回答 1查看 567关注 0票数 0

当调用onClick函数时,我试图同时更新数组中的2个对象的值。目前,我能够将目标值(选定的)减少1(例如-1),但需要为我的下一个期望提供建议:

如果存在一个先前的值(例如,选择了一个选项),并且我选择了一个不同的选项(单选按钮),那么我期望前面的值同时增加1 (+1),以减少新的值。

阵列结构:

代码语言:javascript
复制
`(4) [{…}, {…}, {…}, {…}]
0: {name: 'Space pod', total_no: 2, max_distance: 200, speed: 2}
1: {name: 'Space rocket', total_no: 1, max_distance: 300, speed: 4}
2: {name: 'Space shuttle', total_no: 1, max_distance: 400, speed: 5}
3: {name: 'Space ship', total_no: 2, max_distance: 600, speed: 10}`

当前:

代码语言:javascript
复制
const handleVehiceChange = (e) => {
setValue(e.target.value);
setVehiclesData(
  vehiclesData.map((vehicle) =>
    vehicle.name === e.target.value
      ? { ...vehicle, total_no: vehicle.total_no - 1 }
      : vehicle
  )
)};
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2022-02-24 05:43:07

与其用total_no递减的新状态覆盖以前的状态,不如使用一个函数来计算递减的结果,而不将结果放入状态。这使得在选定的名称之间切换到减量很容易。

代码语言:javascript
复制
const handleVehiceChange = (e) => {
  setValue(e.target.value);
};
const makeMergedData = () => vehiclesData.map((vehicle) =>
  vehicle.name === value // from state
    ? { ...vehicle, total_no: vehicle.total_no - 1 }
    : vehicle
);

然后将vehiclesData的使用者替换为makeMergedData()

如果vehiclesData没有在其他地方被更改,这可能会使您完全从状态中删除它。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/71247591

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档