如果empIds可用,我想更改emps中的“ selected”键值。我使用两个for循环尝试了以下逻辑。我正在尝试使用for循环的逻辑,但是没有用。任何人都对Single for循环逻辑有所了解。请提供一些示例逻辑。
以下是数组值和对象数组的示例格式
// values in list are dynamic
empIds = [1,3];
// object values in array are dynamic
emps = [{
id: 1,
name:'test1',
selected: false
},
{
id: 2,
name:'test2',
selected: false
},
{
id: 3,
name:'test3',
selected: false
}];
// logic
for (var i = 0; i< empIds.length; i++) {
for (var j = 0; j< emps.length; j++) {
if (empIds[i] === emps[j].id) {
emps[j].selected = true;
} else {
emps[j].selected = false;
}
}
}
答案 0 :(得分:3)
简单的forEach并包含
alive-ios.analytics_160092165.events_2018*
答案 1 :(得分:0)
对于复杂度较低的解决方案,建议您先创建Map
中的emps
,并用id
进行索引,然后再遍历{{1} },然后直接访问相应的对象empIds
:
O(N)
您也可以在const empIds = [1, 3];
const emps = [{
id: 1,
name: 'test1',
selected: false
},
{
id: 2,
name: 'test2',
selected: false
},
{
id: 3,
name: 'test3',
selected: false
}
];
const empsById = emps.reduce((map, emp) => map.set(emp.id, emp), new Map());
empIds.forEach((id) => empsById.get(id).selected = true);
console.log(emps);
中嵌套.find
以在数组中找到合适的对象,但这基本上等效于两个forEach
循环,并且是for