dac*_*cot 5 javascript arrays json
我有一个对象数组,每个对象都有一个左右元素。在某些情况下,数组内的左边可能等于右边,对于数组内的不同对象,反之亦然。需要删除这些“重复项”。
例如,我有一个像这样的对象数组......
[
{"left":"cow","right":"pig"},
{"left":"horse","right":"pig"},
{"left":"rabbit","right":"pig"},
{"left":"bird","right":"pig"},
{"left":"bear","right":"pig"},
{"left":"cow","right":"bird"},
{"left":"horse","right":"bird"},
{"left":"pig","right":"bird"},
{"left":"cow","right":"horse"},
{"left":"bird","right":"horse"},
{"left":"pig","right":"horse"},
{"left":"rabbit","right":"horse"},
{"left":"horse","right":"cow"},
{"left":"pig","right":"cow"},
{"left":"bird","right":"cow"},
{"left":"bear","right":"cow"},
{"left":"horse","right":"rabbit"},
{"left":"pig","right":"rabbit"},
{"left":"bear","right":"rabbit"},
{"left":"pig","right":"bear"},
{"left":"rabbit","right":"bear"},
{"left":"cow","right":"bear"}
]
Run Code Online (Sandbox Code Playgroud)
我需要将它过滤到唯一的对,就像这样......
[
{"left":"cow","right":"pig"},
{"left":"horse","right":"pig"},
{"left":"rabbit","right":"pig"},
{"left":"bird","right":"pig"},
{"left":"bear","right":"pig"},
{"left":"cow","right":"bird"},
{"left":"horse","right":"bird"},
{"left":"cow","right":"horse"},
{"left":"rabbit","right":"horse"},
{"left":"bear","right":"cow"},
{"left":"bear","right":"rabbit"}
]
Run Code Online (Sandbox Code Playgroud)
使用javascript。
您将需要使用 Array.prototype.filter 以及一个基本对象来跟踪哪些对已被触摸。
var input = [ ... ];
var pairs = {};
var output = input
.filter(function(item) {
if (pairs[item.left] == item.right ||
pairs[item.right] == item.left)
return false;
pairs[item.left] = item.right;
return true;
});
Run Code Online (Sandbox Code Playgroud)