当前位置: 首页 > 面试题库 >

消除JSON对象中的重复项

祁嘉木
2023-03-14
问题内容
[
  {
    "lastName": "Seymour",
    "gender": "Female",
    "patientID": 18134,
    "firstName": "Stephanie",
    "age": "111Y"
  },
  {
    "lastName": "Seymour",
    "gender": "Female",
    "patientID": 18134,
    "firstName": "Stephanie",
    "age": "111Y"
  }
]

添加它是否包含此值之前,如何检查我的json …


问题答案:

明显的方式

最明显的方法是使用for循环并遍历数组中的所有项目,并在每次想知道是否已经有特定项目时进行比较。琐碎但乏味,尤其是当您要进行很多比较时。

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;
};

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

contains(arr, newObj);

聪明的方式

此代码使用Javascript的功能,其原型可在某种关联的内存存储中用作数组。假设您的JSON项目位于arr变量中。定义您的比较键(例如,名字和姓氏):

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);
    }
}

找出数组中是否已经有一个项目非常简单:

hash.contains(key);

就是这样。比遍历整个数组快得多。特别是当它有很多物品时。



 类似资料:
  • 问题内容: 我有一个看起来像这样的数组: 而且我需要删除重复项,以便保留类似以下内容: 我尝试安装underscore.js并使用._uniq,但这似乎仅在对象中出现一对时才起作用。我似乎无法使它跨多个键工作。 当我尝试类似的东西: 我只得到前三个唯一值(每个年级一个)。但是我需要所有年级和领域的唯一值。是否有一种简单的方法将两个键都馈给_.uniq函数? 最终,我需要一个列表,其中每个唯一的等级

  • 问题内容: 我有一个字典列表,其中特定值重复多次,我想删除重复的值。 我的清单: 删除重复值的功能: 当我调用此函数时,我得到了。 当我尝试遍历生成器时,我得到 有没有办法删除重复的值或遍历生成器 问题答案: 您可以通过字典理解轻松地删除重复键,因为字典不允许重复键,如下所示- 输出-

  • 问题内容: 我有一个包含我的对象的数组。每个人都有财产。 有没有比我的数组中找到重复的帖子ID的更有效方法? 问题答案: 我将建议2解决方案。 两种方法都必须是平等的 使帖子符合可哈希和平等 在这里,我假设您的struct(或类)具有type 的属性。 解决方案1(丢失原始订单) 要删除重复的内容,您可以使用 解决方案2(保留订单)

  • 问题内容: 我有一个简单的问题要问,我有Product类,其中的字段如下: 我想根据ID从LinkedHasSet中删除重复项,例如,具有相同ID但数量不同的产品将被添加到集合中,我想删除(更新)具有相同ID的产品,并且它将通过我的对象的唯一ID进行操作要做到这一点? 例如,产品:id = 1,类别= CCTV,符号= TVC-DS,desc =简易摄像机,价格= 100.00, 数量= 1, 产

  • 我有一个要迭代通过的JSON对象。 我正在使用映射这些值,我认为这是处理对象的正确方法: 但是,当我希望对象返回时,上面的返回以下内容: 为什么它返回的是值,而不是对象?

  • 问题内容: 我有一个包含对象数组的对象。 我想知道什么是从数组中删除重复对象的最佳方法。举例来说,事物……东西将变成…… 问题答案: 一种原始方法是: