从对象获得数组差异的最佳方法是哪一种?

时间:2019-01-12 14:01:21

标签: javascript jquery

我有一个值数组:["1", "2", "3"],它实质上包含存储在此对象数组中的记录的引用:

[
    { id: 1, name: "John" },
    { id: 2, name: "Patrick" },
    { id: 3, name: "Jack" },
    { id: 4, name: "Paula" },
    { id: 5, name: "Sarah" }   
]

我想从对象数组中返回丢失的引用,所以结果将是:4, 5。到目前为止,我实现的是从html中所有可用的select中获取第一个数组的所有选定值:

var selected_options = $('.options-picker')
    .map(function() { return this.value}).get();

这将返回1, 2, 3。如何从对象4, 5的数组中提取?

谢谢。

2 个答案:

答案 0 :(得分:2)

使用filterincludes对照数组中的值检查对象ID。

const data = [
  { id: 1, name: "John" },
  { id: 2, name: "Patrick" },
  { id: 3, name: "Jack" },
  { id: 4, name: "Paula" },
  { id: 5, name: "Sarah" }   
];

const items = [1, 2, 3];

const out = data.filter(obj => !items.includes(obj.id));

console.log(out);

答案 1 :(得分:1)

可以做到

var a=[
    { id: 1, name: "John" },
    { id: 2, name: "Patrick" },
    { id: 3, name: "Jack" },
    { id: 4, name: "Paula" },
    { id: 5, name: "Sarah" }   
]
var b=['1', '2', '3'];
a.forEach((e)=>{
if(b.indexOf(e.id.toString())==-1)
{
b.push(e.id);
}
})
alert(b)