当前位置: 首页 > 知识库问答 >
问题:

在Javascript中删除数组中的重复元素[duplicate]

狄阳华
2023-03-14

我有数组的电子邮件和ID,所以我想删除重复的元素谁有类似的ID的。

例子:

var newarray=[
    {
        Email:"test1@gmail.com",
        ID:"A"
    },
    {
        Email:"test2@gmail.com",
        ID:"B"
    },
    {
        Email:"test3@gmail.com",
        ID:"A"
    },
    {
        Email:"test4@gmail.com",
        ID:"C"
    },
    {
        Email:"test4@gmail.com",
        ID:"C"
    }
];

现在我需要删除具有ID的重复元素是常见的。从某种意义上说,我期待最终的阵列是

var FinalArray=[
    {
        Email:"test1@gmail.com",
        ID:"A"
    },
    {
        Email:"test2@gmail.com",
        ID:"B"
    },  
    {
        Email:"test5@gmail.com",
        ID:"C"
    }
];

共有3个答案

鲁光霁
2023-03-14

如果您可以使用Javascript库,如下划线或洛蒂什,我建议您在他们的库中查看_. uniq函数。来自洛达什:

_.uniq(array, [isSorted=false], [callback=_.identity], [thisArg])

在这里,你必须像下面这样使用,

var non_duplidated_data = _.uniq(newarray, 'ID'); 
夏景同
2023-03-14

您可以使用哈希表对其进行筛选。

js prettyprint-override">var newarray = [{ Email: "test1@gmail.com", ID: "A" }, { Email: "test2@gmail.com", ID: "B" }, { Email: "test3@gmail.com", ID: "A" }, { Email: "test4@gmail.com", ID: "C" }, { Email: "test5@gmail.com", ID: "C" }],
    filtered = newarray.filter(function (a) {
        if (!this[a.ID]) {
            this[a.ID] = true;
            return true;
        }
    }, Object.create(null));

console.log(filtered);
.as-console-wrapper { max-height: 100% !important; top: 0; }
万俟宜修
2023-03-14

使用rray.prototype.filter筛选出元素,并保持重复的检查使用temp数组

var newarray = [{
  Email: "test1@gmail.com",
  ID: "A"
}, {
  Email: "test2@gmail.com",
  ID: "B"
}, {
  Email: "test3@gmail.com",
  ID: "A"
}, {
  Email: "test4@gmail.com",
  ID: "C"
}, {
  Email: "test5@gmail.com",
  ID: "C"
}];
   
// Array to keep track of duplicates
var dups = [];
var arr = newarray.filter(function(el) {
  // If it is not a duplicate, return true
  if (dups.indexOf(el.ID) == -1) {
    dups.push(el.ID);
    return true;
  }

  return false;
  
});

console.log(arr);
 类似资料:
  • 问题内容: 如今,在Swift中,您只需键入 以使数组唯一。(或根据需要订购)。 在此之前,它是怎么做的? 我可能有一个如下所示的数组: 或者,实际上,是数据的相似类型部分的任何序列。我要做的是确保每个相同元素中只有一个。例如,上面的数组将变为: 请注意,删除了2、6和15的重复项以确保每个相同元素中只有一个。Swift是否提供一种轻松实现此目的的方法,还是我必须自己做? 问题答案: 您可以自己滚

  • 问题内容: 如何从JavaScript中的数组中删除空元素? 有没有简单的方法,还是我需要遍历它并手动将其删除? 问题答案: 编辑: 大约9年前,当时没有很多有用的内置方法时,就回答了这个问题。 现在,当然,我建议您使用该方法。 请记住,此方法将为您返回 一个新数组, 其中的元素可以通过您提供给它的回调函数的条件。 例如,如果要删除或值: 例如,这将取决于您认为什么是“空”,如果您正在处理字符串,

  • 统计一个一维数组中的各个元素的个数,然后删除多出来的重复元素,并输出结果。 例如:[1,2,2,2,3,3,3,3,3]—>[1,2,3] 解决思路 将重复元素的列表中的重复元素进行统计,并将统计结果放在dictionary中,key为元素,value为该元素的个数 更新此步方法:上述步骤的功能,能够通过另外一个方法实现,即collections.Counter() 然后通过for获取key,得到

  • 问题内容: 是什么使用之间的差值的delete算子阵列元件上,而不是使用该Array.splice方法? 例如: 如果我可以像删除对象一样删除数组元素,为什么还要使用splice方法呢? 问题答案: 将删除对象属性,但不会为数组重新索引或更新其长度。这使得它看起来好像是未定义的: 请注意,实际上并没有将其设置为value ,而是从数组中删除了该属性,使其 显得 未定义。Chrome开发人员工具通过

  • 我需要做一些从arr1中删除“b”和“d”的操作。当然,我也需要从arr1中删除arr2中存在的元素。

  • 问题内容: var arr = [1,2,3,5,6]; 删除第一个元素 我想删除数组的第一个元素,使其变为: 删除第二个元素 扩展这个问题,如果我想删除数组的第二个元素以使其变为: 问题答案: 要获得更灵活的解决方案,请使用该功能。它允许您根据索引值删除数组中的任何项目: