首页 > 解决方案 > 搜索另一个对象数组中的值列表,并使用单个 for 循环更改对象数组中的一个键

问题描述

如果 empId 可用,我想更改 emps 中的“选定”键值。我使用两个 for 循环尝试了以下逻辑。我正在尝试使用单个 for 循环的逻辑,但它不起作用。任何人都对单个 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;
      }
   }
 }

标签: javascript

解决方案


简单的 forEach 并包含

const empIds = [1, 3];

// object values in array are dynamic
const emps = [{
    id: 1,
    name: 'test1',
    selected: false
  },
  {
    id: 2,
    name: 'test2',
    selected: false
  },
  {
    id: 3,
    name: 'test3',
    selected: false
  }
];

emps.forEach(e => e.selected = empIds.includes(e.id));

console.log(emps);


推荐阅读