鍍金池/ 問(wèn)答/Java  C  網(wǎng)絡(luò)安全  HTML/ 兩個(gè)json 去重

兩個(gè)json 去重

a = [{ "id": "1231" }, { "id": "9387" }, { "id": "68433" }, { "id": "43566" }]
b = [{ "id": "1231" }, { "id": "43566" }]
預(yù)期結(jié)果為 c = [{ "id": "9387" }, { "id": "68433" }]

求教大神

回答
編輯回答
挽歌

@luozz 圖片描述

麻煩你看下

2017年8月17日 16:06
編輯回答
殘淚

如果題主去重是要把相同的從兩邊都刪掉,以多的為準(zhǔn)的話,就是下面這樣:如果 key 可能為 對(duì)象的話,還需要做JSON.stringify 處理,有問(wèn)題留言

let a = [{ "id": "1231" }, { "id": "9387" }, { "id": "68433" }, { "id": "43566" }];
let b = [{ "id": "1231" }, { "id": "43566" }];


function uniqueArr(arrA, arrB, key) {
    let bigArr = arrA.length > arrB.length ? arrA : arrB,
        smallArr = arrA.length <= arrB.length ? arrA : arrB;
    smallArrData = smallArr.map((obj, index) => obj[key]);
    return bigArr.filter((obj, index) => smallArrData.indexOf(obj[key]) === -1);
}

console.log(uniqueArr(a, b));
2017年3月27日 22:39
編輯回答
青檸

我寫了一個(gè)方法,用到了ES6,你直接復(fù)制執(zhí)行便可看到效果,希望能幫助到你:

<!DOCTYPE html>
<html>
<head>
    <meta charset="UTF-8">
    <title>tab</title>
</head>
<body>
    <script>
        let a = [{
            "id": "1231"
        }, {
            "id": "9387"
        }, {
            "id": "68433"
        }, {
            "id": "43566"
        }];
        let b = [{
            "id": "1231"
        }, {
            "id": "43566"
        }];
        let c = a.filter((value) => {
            for (let k in b) {
                if (value.id === b[k].id) {
                    return false;
                }
            }
            return value;
        });
        console.log(c);
    </script>
</body>
</html>
2017年1月10日 11:36
編輯回答
陌璃

提供一個(gè)思路,把兩個(gè)數(shù)組連接成一個(gè)數(shù)組,然后就是對(duì)數(shù)組的去重了。

let a = [{ "id": "1231" }, { "id": "9387" }, { "id": "68433" }, { "id": "43566" }]
let b = [{ "id": "1231" }, { "id": "43566" }]

let obj = [...a, ...b].reduce((obj, val) => {
  let str = JSON.stringify(val)
  obj[str] = obj[str] ? ++obj[str] : 1
  return obj
}, {})

let c = Object.keys(obj).filter(key => obj[key] === 1)
2018年4月25日 09:07
編輯回答
嘟尛嘴
var a = [{ "id": "1231" }, { "id": "9387" }, { "id": "68433" }, { "id": "43566" }],
b = [{ "id": "1231" }, { "id": "43566" }],
c = a.filter(function(o) {
  return b.every(function(e){
    return o.id !== e.id;
  });
});
alert(JSON.stringify(c));
2017年12月12日 02:54