javascript - 如何更新js中的嵌套对象数组?
问题描述
我需要修改具有内部数组对象的组件状态。修改对象数组没有问题,但我想更新具有动作格式的内部对象数组值。它不会将操作值更新为"No Action Needed"。这些功能有什么问题?提前致谢。map()
let example_response = {
data: [
{
details: [
{
format: "date",
value: "2020-04-29T15:03:44.871Z",
title: "Date"
},
{
format: "action",
value: "-",
title: "Action"
}
],
id: 13409,
isSelected:true
}, {
details: [
{
format: "date",
value: "2019-04-29T15:03:44.871Z",
title: "Date"
},
{
format: "action",
value: "-",
title: "Action"
}
],
id: 13409,
isSelected:false
}
]
};
const newList = example_response.data.map((item) => {
if (item.isSelected) {
item.details.map((elem) => {
if (elem.format === "action") {
const updatedElem = {
...elem,
value: "No Action Needed"
};
return updatedElem;
}
});
}
return item;
});
console.log(newList);
解决方案
我发现了2个问题:
- 你没有修改
item.details
(你只是映射它)。 - 你只在什么时候返回
updatedElem
,elem.format === "action"
但你在其他情况下返回任何东西
尝试
let example_response = {
data: [{
details: [{
format: "date",
value: "2020-04-29T15:03:44.871Z",
title: "Date"
},
{
format: "action",
value: "-",
title: "Action"
}
],
id: 13409,
isSelected: true
}, {
details: [{
format: "date",
value: "2019-04-29T15:03:44.871Z",
title: "Date"
},
{
format: "action",
value: "-",
title: "Action"
}
],
id: 13409,
isSelected: false
}]
};
const newList = example_response.data.map((item) => {
if (item.isSelected) {
item.details = item.details.map((elem) => {
if (elem.format === "action") {
elem.value = "No Action Needed";
}
return elem;
});
}
return item;
});
console.log(newList);
推荐阅读
- flutter - 无法从颤振中的模型类获取数据
- python - 如何将数据框转换为列表
- azure - AzurePipeline 错误:找不到与模板文件模式匹配的任何文件
- swift - SPM 与资源 + TestFlight
- python - django html中的if语句和for循环问题
- influxdb - 将数据从 CSV 文件导入到 InfluxDB
- python - 切片numpy数组取每n个元素
- python-3.6 - 如何从 python3.6 中的两个列表中删除公共元素?
- java - Bouncy Castle 的 CMSSignedData PEM 生成的数据导致解析问题
- javascript - JavaScript:函数创建数组作为返回对象的值