javascript - 通过数组中每个 JSON 对象中的值从 JSON 数组中删除重复项

标签 javascript arrays json node.js

如果数组中有两个 JSON 对象对特定字段具有相同的值,那么我想将它们标记为重复。我想删除其中一个。同样,当有多个重复时,我只想保留最后一个对象(最新的)。如果输入:

names_array = [
    {name: "a",  age: 15},
    {name: "a",  age: 16},
    {name: "a",  age: 17},
    {name: "b",  age: 18}
    {name: "b",  age: 19}];

我想要的输出是

names_array_new = 
    {name: "a",  age: 17},
    {name: "b",  age: 19}];

我搜索过这个,但只找到了如何在整个对象相同时删除重复项。

最佳答案

应该这样做:

names_array = [
    {name: "a",  age: 15},
    {name: "a",  age: 16},
    {name: "a",  age: 17},
    {name: "b",  age: 18},
    {name: "b",  age: 19}];

function hash(o){
    return o.name;
}    

var hashesFound = {};

names_array.forEach(function(o){
    hashesFound[hash(o)] = o;
})

var results = Object.keys(hashesFound).map(function(k){
    return hashesFound[k];
})

hash 函数决定哪些对象是重复的,hashesFound 对象将每个哈希值与生成该哈希的最新对象一起存储,结果 数组包含匹配的对象。

关于javascript - 通过数组中每个 JSON 对象中的值从 JSON 数组中删除重复项,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31962567/

相关文章:

asp.net - 将 JSON 传递给需要 List<T> 参数的 PageMethod

javascript - 无法从 JavaScript 中的 JSON 数组获取值

javascript - 在 Selenium 中点击 JavaScript 按钮 - Java

javascript - 输入类似于 Squareup.com

python - 绘制显示粒子百分比的等高线

javascript - 为什么我无法将对象添加到数组中? [javascript]

json - 无法从 Postman 连接到 Twitter API

javascript - 用于分隔文本的前瞻

javascript - OrientDB No database instance found in context 错误?

java - 子数组计数 - 需要帮助