javascript - 如何通过使用 Javascript 比较两组数组来获取唯一对象

标签 javascript arrays

我有以下两个数组:

var data1=[
    {
        "id": 1,
        "url": "http://192.168.1.165:90/asset/"
    },
    {
        "id": 2,
        "url": "Assigned"
    }


]
var data2=[
    {
        "id": 1,
        "url": "http://192.168.1.165:90/asset/"
    },
    {
        "id": 2,
        "url": "Assigned"
    },
{
        "id": 3,
        "url": "Assigned"
    }

]

结果:

var unique=[{ {
            "id": 3,
            "url": "Assigned"
        }}]

如何从这两个数组中获取唯一对象? 我试过像这样使用 for 循环:

var unique = [];
for(var i = 0; i < data2.length; i++){
    var found = false;
    for(var j = 0; data1.length; j++){
     if(data2[i].id == data1[j].id){
      found = true;
      break; 
    }
   }
   if(found == false){
   unique.push(array1[i]);
  }
}

但是想要使用函数式 javascript 获得解决方案...

最佳答案

这样试试

var joined = data1.concat(data2);
var temp = [];
joined.forEach(function (x) {
    var objList=joined.filter(function(y){ return y.id == x.id});
    if(objList.length == 1) // if data count of current item in merged array is 1 that's means it belong to only one data source
        temp.push(x);
})

console.log(temp)

JSFIDDLE

关于javascript - 如何通过使用 Javascript 比较两组数组来获取唯一对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33518506/

相关文章:

javascript - 验证表单编号类型 Javascript

javascript - 从框架调用主页上的功能

javascript - jQuery:将 div 拆分为另一个 div

javascript - jQuery AJAX 200 状态,但神秘的语法错误

javascript - 长轮询服务器原理(客户端识别)

javascript - 如何在 typescript 中将枚举转换为键、值数组?

javascript - js/jquery - 如何在没有索引的情况下获取数组值

php - 如何在 php 中通过 $_GET 传递数组?

javascript - 将键添加到已存在的 javascript 数组中的所有值

PHP拉脱维亚语单词排序数组