比较2个对象并根据Match进行更改

问题描述 投票:0回答:1

我有2个具有键值对的对象,它们应该始终相同(匹配),否则我想将对象#1中的键值修改为“某些值-不可用”

这是我的两个对象:

对象#1

[
  {
    "name": "John",
    "age": "12",
    "id": 1
  },
  {
    "name": "tina",
    "age": "19",
    "id": 2
  }]

对象2(名称检查器)

 [
      {
        "value": "tina"
      },
      {
        "value": "Trevor"
      },
      {
        "value": "Donald"
      },
      {
        "value": "Elon"
      },
      {
        "value": "Pamela"
      },
      {
        "value": "Chris"
      },
      {
        "value": "Jackson"
      }
    ]

我想找出是否在对象#2中找到了对象#1中的name,如果找不到,则添加“-不可用”

e.i

[
      {
        "name": "John - not available",
        "age": "12",
        "id": 1
      },
      {
        "name": "tina",
        "age": "19",
        "id": 2
      }
]

重要提示:我正在使用ES5 ---不是ES6

javascript ecmascript-5
1个回答
0
投票

ES 6,将压缩很多代码,但是如您所要求的ES5,这是ES5解决方案

var arrObj = [
    {
      "name": "John",
      "age": "12",
      "id": 1
    },
    {
      "name": "tina",
      "age": "19",
      "id": 2
    }
  ];
    
var name_list = [
      {
        "value": "tina"
      },
      {
        "value": "Trevor"
      },
      {
        "value": "Donald"
      },
      {
        "value": "Elon"
      },
      {
        "value": "Pamela"
      },
      {
        "value": "Chris"
      },
      {
        "value": "Jackson"
      }
    ];
    
var updated_arr = [];

for (var i = 0; i < arrObj.length; i++) {
   
   var match_found = false;
   var temp_obj = arrObj[i];
   
   for (var j = 0; j < name_list.length; j++) {
      if (name_list[j]['value'] === temp_obj['name']) {
          match_found = true;
          break;
      }
   }
   
   if (!match_found) {
      temp_obj['name'] = temp_obj['name'] + ' - not available';
   }
   
   updated_arr.push(temp_obj);
}


console.log(updated_arr);
© www.soinside.com 2019 - 2024. All rights reserved.