javascript - 检查 JSON 中的重复项

标签 javascript jquery json duplicates

我有一个 json 对象:

var object1 = [
                {"value1": "1", "value2": "2", "value3": "3",},
                {"value1": "1", "value2": "5", "value3": "7",},
                {"value1": "6", "value2": "9", "value3": "5",},
                {"value1": "6", "value2": "9", "value3": "5",}
]

现在我想要

  • 从该对象中取出每条记录
  • 并检查该记录的精确副本在该对象中出现了多少次?

如果只有 1 个副本,则执行某些操作,如果超过 2 个副本,则执行其他操作。关于 JSON 重复项的答案很少,但它们针对特定值而不是完整记录。

所以我会做记录:

{ "value1": "1", "value2": "2", "value3": "3",}

并将其与object1进行比较。上面的记录将返回 1,因为 object1 内只有 1 个副本

供将来使用。鉴于这些记录

var asset = [
    { value1: "1", value2: "2", value3: "3" },
    { value1: "1", value2: "5", value3: "7" },
    { value1: "6", value2: "9", value3: "5" },
    { value1: "6", value2: "9", value3: "5" }
];

此代码可用于查找重复项:


function countEqual(oo, pp) {
    var count = 0;
    oo.forEach(function (el) {
        var i, equal = true;
        for (i in el) {
            equal = equal && el[i] === pp[i];
        }
        equal && count++;
    });
    return count;
}

var cleaned = [];

asset.forEach(function (itm) {
    var unique = true;
    cleaned.forEach(function (itm2) {
        if (_.isEqual(itm, itm2)) unique = false;
    });
    if (unique) cleaned.push(itm);
});

for (var i = 0; i < cleaned.length; i++) {
    if (countEqual(asset, cleaned[i]) === 1) {
        // DO SOMETHING
    }
    else {
        // DO SOMETHING ELSE
    }
}

最佳答案

var asset = [
    { value1: "1", value2: "2", value3: "3" },
    { value1: "1", value2: "5", value3: "7" },
    { value1: "6", value2: "9", value3: "5" },
    { value1: "6", value2: "9", value3: "5" }
];

function countEqual(oo, pp) {
    var count = 0;
    oo.forEach(function (el) {
        var i, equal = true;
        for (i in el) {
            equal = equal && el[i] === pp[i];
        }
        equal && count++;
    });
    return count;
}
console.log(countEqual(asset, { value1: "1", value2: "1", value3: "2" })); // 0
console.log(countEqual(asset, { value1: "1", value2: "2", value3: "3" })); // 1
console.log(countEqual(asset, { value1: "6", value2: "9", value3: "5" })); // 2

关于javascript - 检查 JSON 中的重复项,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30982157/

相关文章:

javascript - 两个事件中的 jQuery 函数

jquery - 同时切换/滑动 DIV

java - HtmlUnit 页面响应(下载文件)

json - 如何接收 JSON 字符串?

javascript - 当组件可以随时卸载时,如何使用 React 管理 useEffect 中的竞争条件风险?

javascript - 使用页面对象模型在 Protractor 测试中需要断言表单字段

javascript - 使用不同的键迭代 Json

javascript - 正则表达式验证国际电话号码

javascript - 如何排除特定元素的 Jquery mouseup

json - 如何使用 jq 将多个输出对象组合成一个对象