【问题标题】:Unique elements on basis of keys [duplicate]基于键的唯一元素[重复]
【发布时间】:2018-04-30 19:57:17
【问题描述】:

我想根据 name 属性在 a 中找到 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);

【问题讨论】:

    标签: javascript arrays


    【解决方案1】:

    使用Array#filter 过滤a 数组并传递一个使用Array#some 的谓词来尝试查找项目。当没有匹配时,获取那些项目

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

    【讨论】:

    • 此类问题请查找重复项。由于您知道解决方案,因此您更有可能找到更好的骗局。
    【解决方案2】:

    根据您的代码...

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

    【讨论】:

    • 此类问题请查找重复项。由于您知道解决方案,因此您更有可能找到更好的骗局。
    • @Rajesh Hope,我们已经讨论过this。我知道我在做什么。
    • 如果你还记得我们的谈话,很明显,回答欺骗是一种不好的做法。您的答案可能没有错,但它是错误的内容重复。所以我会坚持我的意见。
    • 我也刚刚意识到,您正在使用b.map,但您不接受它的价值或从中返回任何东西。那么为什么是地图?为什么不.forEach
    • @Rajesh 我同意您的最后评论并更新了答案。你坚持你的想法,我不在乎。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2016-09-26
    • 1970-01-01
    • 1970-01-01
    • 2011-08-28
    • 2013-01-27
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多