如何在 Javascript 中找到(和删除重复数据)对象数组的组合?



我在Javascript中有一个对象的映射数组,如下所示:

Mapping_Array = [
{ input1: node_0, input2: node_1 },
{ input1: node_1, input2: node_2 },
{ input1: node_2, input2: node_3 },
{ input1: node_0, input2: node_1 },
{ input1: node_1, input2: node_0 }
];

我能够消除那些具有相同input1和input2的条目(例如上面的第一个条目和第四个条目(的重复,但我似乎找不到并删除那些具有切换条目的条目(如上面的第一条条目和最后一条条目(。我已经搜索过了,但在SO上找不到任何有类似答案的内容。有人遇到过这个&找到解决方案了吗?

编辑:添加我当前的功能来检查重复项:

function check_mapping_array() {
// De-duplicate the array
jsonObject = Mapping_Array.map(JSON.stringify);
uniqueSet = new Set(jsonObject);
Mapping_Array = Array.from(uniqueSet).map(JSON.parse);
}

假设节点的数据类型是字符串或数字。更新答案:使用input1和input2作为关键字,并将索引存储为值

let map = new Map();
let arr = [
{ input1: "node_0", input2: "node_1" },
{ input1: "node_1", input2: "node_2" },
{ input1: "node_2", input2: "node_3" },
{ input1: "node_0", input2: "node_1" },
{ input1: "node_1", input2: "node_0" }
];
map.set(arr[0]["input1"] + "|" + arr[0]["input2"], 0);
for(let i=1; i<arr.length;i++){
let temp = map.get(arr[i]["input2"] + "|" + arr[i]["input1"]);
if(temp != undefined){//switch exists
console.log("current index",i);
console.log("prev index", temp);
//now you remove the previous entry as well
}
else{
map.set(arr[i]["input1"] + "|" + arr[i]["input2"], i);
}
}  

对于其他数据类型,您可以始终使用JSON.stringify

最新更新