什么是从本机javascript中的数组中删除重复值的最佳方法

时间:2018-11-30 09:55:29

标签: javascript arrays

我在JavaScript中有这样的数组

var arr = [1,2,1.5,3,1.5,1];

我想从数组中删除所有重复的值,所以我的输出就像

[2,3]

我可以使用循环来完成它。我在这里发布了这个问题,因为我需要一种快速的方法来完成它。

3 个答案:

答案 0 :(得分:8)

您可以检查该值的第一个和最后一个索引,如果索引相同,则可以使用它。

var array = [1, 2, 1.5, 3, 1.5, 1],
    ones = array.filter((v, _, a) => a.indexOf(v) === a.lastIndexOf(v));

console.log(ones);

使用Map的方法。

  

通过检查地图的反面是否已具有给定值的一个条目来与地图一起使用。

     

对于以下任何相同的值,条目将更改为false,稍后将忽略这些值。

var array = [1, 2, 1.5, 3, 1.5, 1, 1, 1],
    map = array.reduce((m, v) => m.set(v, !m.has(v)), new Map),
    ones = array.filter(Map.prototype.get, map);

console.log(ones);
console.log([...map]); // just for checking the values

答案 1 :(得分:1)

我尝试使用这种新方法仅使用Array.filter来获取未重复的值...如果您认为性能更好或更好,欢迎用户发表评论。

var arr = [1,2,1.5,3,1.5,1]

let tmp = {}
let res = [...arr, ...arr].filter((d, i) => {
  tmp[d] = (tmp[d] || 0) + 1
  return i > arr.length - 1 && tmp[d] == 2
})

console.log(res)

答案 2 :(得分:0)

我们可以使用JavaScript的 .filter()方法来实现。

const arr = [1,2,1.5,3,1.5,1];

const newArr = arr.filter(val => (arr.filter(v => v === val).length === 1));

console.log(newArr); // [ 2, 3 ]