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

标签 javascript jquery

比较两个对象数组以通过键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 也可以在开始时获得值(value)。

尝试 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并过滤新数组。

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);

关于javascript - 通过比较新旧数组对象获取唯一值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57889254/

相关文章:

javascript - 使用JS从Gridview获取值

javascript - 将 JQuery 模态对话框动态调整为 IFrame 内容

javascript - 从附加元素 jquery 访问对象属性或方法

javascript - 如何更改数组字符串中特定单词的颜色? : Javascript/jQuery

javascript - NodeJS 和 MongoDB FindAndModify() 需要删除或更新

javascript - Ajax 图像预加载器不起作用

javascript - 删除后删除原始元素

javascript - 为什么我必须使用 "this"来访问函数的内部属性

javascript - jQuery:更改输入值不用于新添加

jquery - 快速点击下一步使 slider 离开屏幕