基于键的独特元素

时间:2017-11-17 05:32:10

标签: javascript arrays

我想在名称属性

的基础上找到b中不存在的唯一元素
EXPECTED OUTPUT
var data= [{"name":"rashffffish","color":"blue" }];
var a =[{"name":"sam","color":"red" }, {"name":"rash","color":"blue" },{"name":"rashffffish","color":"blue" }];


var b = [{"name":"sam","color":"red" },{"name":"rash","color":"red" }];


var data = [];
b.map((n)=>{
  for(i=0;i<a.length;i++) {
    if(n.name!= a[i].name){
      data.push(a[i]);
    }
  }
})

console.log(data);

2 个答案:

答案 0 :(得分:1)

使用Array#filter过滤a数组并传递使用Array#some的谓词来尝试查找项目。如果没有匹配,请获取这些项目

&#13;
&#13;
const a =[
   {"name":"sam","color":"red" }, 
   {"name":"rash","color":"blue" },
   {"name":"rashffffish","color":"blue" }
];

const b = [
   {"name":"sam","color":"red" },
   {"name":"rash","color":"red" }
];

const filtered = a.filter(itemA => !b.some(itemB => itemA.name === itemB.name));

console.log(filtered);
&#13;
&#13;
&#13;

答案 1 :(得分:0)

从你的代码......

var a = [{
  "name": "sam",
  "color": "red"
}, {
  "name": "rash",
  "color": "blue"
}, {
  "name": "rashffffish",
  "color": "blue"
}];


var b = [{
  "name": "sam",
  "color": "red"
}, {
  "name": "rash",
  "color": "red"
}];


var data = a;
b.forEach((n) => {
  for (i = 0; i < data.length; i++) {
    if (n.name === a[i].name) {
      var ind= data.indexOf(a[i]);
      data.splice(ind, 1);
    }
  }
})
console.log(data);