消除JSON对象中的重复项 [英] Elminating duplicates in a JSON object

查看:129
本文介绍了消除JSON对象中的重复项的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

[
  {
    "lastName": "Seymour",
    "gender": "Female",
    "patientID": 18134,
    "firstName": "Stephanie",
    "age": "111Y"
  },
  {
    "lastName": "Seymour",
    "gender": "Female",
    "patientID": 18134,
    "firstName": "Stephanie",
    "age": "111Y"
  }
]

如何在添加是否包含此值之前检查我的json ...

How can i check my json before adding whether it contains this value or not...

推荐答案

明显的方式



最明显的方法是使用a for 循环并迭代数组中的所有项目,并在每次想知道您是否已经有特定项目时进行比较。琐碎但乏味,特别是当你有许多比较时。

Obvious way

The most obvious way would be to use a for loop and iterate over all items in array and compare every time when you'd like to know whether you already have a particular item in it. Trivial but tedious especially when you have many compares to make.

function contains(items, obj) {
    var itemKey = null;
    var objKey = obj.firstName + ";" + obj.lastName;
    var result = false;
    for(var i = 0; !result && i < arr.length; i++)
    {
        itemKey = items[i].firstName + ";" + items[i].lastName;
        result = itemKey === objKey;
    }
    return result;
};

每当您要搜索现有对象时:

Whenever you'd be searching for existing object:

contains(arr, newObj);



Smart(呃)方式



这个代码使用Javascript的能力,其原型可以在一种关联存储器存储中用作数组。假设您在 arr 变量中有JSON项。定义比较密钥(比如它的名字和姓氏):

Smart(er) way

This code uses the ability of Javascript whose prototypes can be used as arrays in a sort of associative memory storage. Suppose you have your JSON items in arr variable. Define your compare key (say it's first name and last name):

var arr = /* your JSON object */;
var hash = (function() {
    var keys = {};
    return {
        contains: function(key) {
            return keys[key] === true;
        },
        add: function(key) {
            if (keys[key] !== true)
            {
                keys[key] = true;
            }
        }
    };
})();

var key = null;
for (var i = 0; i < arr.length; i++)
{
    key = arr[i].firstName + ";" + arr[i].lastName;
    if (!hash.contains(key))
    {
        hash.add(key);
    }
}

确定您的数组中是否已有项目那么非常简单:

Finding out whether you already have an item in your array is then pretty simple:

hash.contains(key);

就是这样。比迭代整个数组快得多。特别是当它有很多项目时。

And that's it. Much faster than iterating over the whole array. Especially when it has many items.

这篇关于消除JSON对象中的重复项的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆