首页 > 解决方案 > 在对象数组中搜索从另一个数组提供的特定键

问题描述

我有一个结构如下的对象:

[
    {
        "id": "NONSTOPS",
        "label": "Nonstop",
        "value": "no"
    },

    {
        "id": "REWARDS",
        "label": "Rewards",
        "value": "no"
    },

    {
        "id": "SEAT",
        "label": "Seats",
        "value": "no"
    },

    {
        "id": "BAGS",
        "label": "Bags",
        "value": "no"
    }
]

和一个结构为

["NONSTOPS", "REWARDS"]

返回

[
    {
        "id": "NONSTOPS",
        "label": "Nonstop",
        "value": "yes"
    },

    {
        "id": "REWARDS",
        "label": "Rewards",
        "value": "yes"
    },

    {
        "id": "SEAT",
        "label": "Seats",
        "value": "no"
    },

    {
        "id": "BAGS",
        "label": "Bags",
        "value": "no"
    }
]

如果数组上存在 ID,它将基于数组搜索对象并将值更改为“是”。

到目前为止,这是我的代码

for(let i=0; i< obj.length; i++){
  for(let j = 0; j<array.length; j++){
    if(obj[i].id === array[j]){
      obj[i].value ='yes'
    }
  }
}

我的代码似乎有些不对劲,我想知道是否有更简单的方法可以做到这一点,也许使用某种映射器?

标签: javascript

解决方案


可能可以对您的数组使用 a.forEachindexOf检查(为了更简洁,您的方法没有问题)

obj.forEach(o => {
    if (array.indexOf(o.id) > -1) o.value = "yes";
});

推荐阅读