javascript - 使用 Javascript 从 JSON 中过滤唯一对

标签 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"}
]

我需要将它过滤成独特的对,就像这样......

[
    {"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/

相关文章:

javascript - 从 Node js中的文件读取序列化的对象数组

json - LOG4J2:如何在属性文件中配置 JSON 布局

javascript - 无法读取未定义的属性 'dropdown'

javascript - cometd 事件不那么频繁

javascript - 获取动态创建的文本

javascript - Node Js Transformation JSON by JSON key

javascript - 如何只允许用户在文本框中输入 [1-9]-[某些字符]?

java - 从 Java 序列中分割特定字符

arrays - JSON 数组列转换为 JSON 对象

java - JSONObject 返回类型