我有一个对象数组,每个对象都有一个左右元素。在某些情况下,在数组中,左边可能等于右边,反之亦然,对于数组中的不同对象。需要删除这些“重复项”。
例如,我有一个像这样的对象数组......
[
{"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"}
]
我需要将它过滤成独特的对,就像这样......
[
{"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"}
]
使用 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;
});
关于javascript - 使用 Javascript 从 JSON 中过滤唯一对,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33224939/