比较两个对象数组以通过键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/