根据数组中的值修改对象

时间:2018-01-06 15:35:12

标签: javascript

我希望修改对象中的值,如果它的键存在于数组中,

可能是Object.keys或indexOf()的一些组合。

所以基本上我有一个看起来像这样的对象

{
  '9': true,
  '10': false,
  '11': true,
  '12': true,
  '13': true,
  '14': true,
  '15': true,
  '16': true,
  '17': true,
  '18': true,
  '19': true,
}

和一个看起来像这样的数组;

['10','15','18']

我希望最终得到这个;

{
  '9': true,
  '10': true,
  '11': true,
  '12': true,
  '13': true,
  '14': true,
  '15': false,
  '16': true,
  '17': true,
  '18': false,
  '19': true,
}

所以基本上如果数组中存在一个键,则将其布尔值更改为false。

2 个答案:

答案 0 :(得分:1)

将您的值用作输入数组中的键:

const x = {
    '9': true,
    '10': false,
    '11': true,
    '12': true,
    '13': true,
    '14': true,
    '15': true,
    '16': true,
    '17': true,
    '18': true,
    '19': true,
}

['10','15','18'].forEach((val) => {
    if(x.hasOwnProperty(val)) {
        x[val] = false;
    }
});

答案 1 :(得分:1)

您可以使用键迭代数组并检查属性是否存在,然后将值更改为false

var object = { 9: true, 10: false, 11: true, 12: true, 13: true, 14: true, 15: true, 16: true, 17: true, 18: true, 19: true },
    keys = ['10', '15', '18'];
  
keys.forEach(k => k in object && (object[k] = false));

console.log(object);
.as-console-wrapper { max-height: 100% !important; top: 0; }