javascript - 如果对象 id 在另一个对象数组中,如何设置布尔属性值?
问题描述
我有两个数组selectedData
和allServices
selectedData = [
{ id: 5 },
{ id: 6 }
];
allServices = [
{ id: 3, selected: false },
{ id: 4, selected: false },
{ id: 5, selected: false },
{ id: 6, selected: false },
{ id: 7, selected: false },
];
我使用该功能来比较和更改allServices
结构。
const changeStructure = (selectedData, allServices) => {
selectedData.services.map((_item, index) => {
allServices.map((value, i) => {
if (value.id === _item.id) {
allServices[i].selected = true;
} else {
allServices[i].selected = false;
}
})
})
console.log('final allServices', allServices);
return allServices;
}
console.logfinal allServices
是
[
{ id: 3, selected: false },
{ id: 4, selected: false },
{ id: 5, selected: false },
{ id: 6, selected: true },
{ id: 7, selected: false },
];
我以为我的allServices
应该是
[
{ id: 3, selected: false },
{ id: 4, selected: false },
{ id: 5, selected: true },
{ id: 6, selected: true },
{ id: 7, selected: false },
];
我不知道为什么会这样。任何建议将不胜感激。
解决方案
您需要else
从代码中删除该块,这会将先前的 ID 更新为不匹配时的 false。
const changeStructure = (selectedData, allServices) => {
selectedData.services.map((_item, index) => {
allServices.map((value, i) => {
if (value.id === _item.id) {
allServices[i].selected = true;
}
})
})
console.log('final allServices', allServices);
return allServices;
}
推荐阅读
- javascript - Angular Firestore 权限不足
- python - Holoviews 中的水平滚动条
- nestjs - Nest JS - 尝试在 RolesGuard 中获取用户上下文时返回未定义
- quickfixj - QuickFIX/J :设置 StartTime/EndTime 以便会话永久运行
- flutter - 无法从本地 Web 服务器获取数据
- flutter - 如何在颤动中向grpc移动客户端添加拦截器
- java - 我可以在运行时查询 lambda 函数的生命周期吗?
- javascript - 如何获取当前设置的 CSS 样式?
- python - 获取日期范围内每小时的数据
- paypal - 如何以访客身份在 eBay Sandbox 下订单