通过比较新旧数组对象来获取唯一值

2024-01-27

比较两个对象数组以通过键查找不同的值number

假设旧对象包含

oldChoices = [{"number": 1, "text": "abc" }, {"number": 2, "text": "pqr" }]

新对象包括

newChoices = [{"number": 1, "text": "abc" }, {"number": 2, "text": "pqr" }, {"number": 3, "text": "xyz" }]

所以需要得到:

[{"number": 3, "text": "xyz" }]

笔记:1. 在文本框的按键事件上,值填充到 newChoices 数组中。 2. newChoices 也可以在一开始就获得价值。

尝试1:

var uniqueTemp = [];
$.each(oldChoices, function(x, e1){
   $.each(newChoices, function(y, e2){
      if(e1.number != e2.number){
         uniqueTemp.push(e2);
      }
   });
})

尝试2:

var uniqueTemp = [];
oldChoices.filter(function(x){
   if(newChoices.indexOf(x.number) === -1){
    uniqueTemp.push(x);
    return true;
   }else{
    return false;
   }
});

预期的:

[{"number": 3, "text": "xyz" }]

你可以采取Set https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Set并过滤新数组。

var oldChoices = [{ number: 1, text: "abc" }, { number: 2, text: "pqr" }],
    newChoices = [{ number: 1, text: "abc" }, { number: 2, text: "pqr" }, { number: 3, text: "xyz" }],
    old = new Set(oldChoices.map(({ number }) => number)),
    result = newChoices.filter(({ number }) => !old.has(number));

console.log(result);
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

通过比较新旧数组对象来获取唯一值 的相关文章

随机推荐