消除重复值javascript

时间:2017-10-11 06:26:06

标签: javascript arrays

我尝试从数万个点绘制图表,但因为这个数字太大了我需要减少它。他们中的许多人都有重复。我尝试用这个来减少数量:

   var array=_.reject(data,function(object,i){
return i>0 && (data[i-1].a === object.a && data[i-1].b===object.b && data[i-1].c===object.c);
});

如何修改此功能或创建新功能,以保持第一个和最后一个值被视为重复。那些代表时间戳的另一个属性“d”不同。

3 个答案:

答案 0 :(得分:2)

//return filtered points, compareFunction for sorting, equalFunction for
//removing points
function removeDuplicate(data,compareFunction,equalFunction) {
  data.sort(function(pointa, pointb) {
    var compare = compareFunction(pointa,pointb);
    return compare;
  });
  var arr = new Array();
  var prev = new Object();
  var index = 0;
  for (var i = 0; i < data.length; i++) {
    if (i == 0 || !(equalFunction(prev,data[i]))) {
      arr[index++] = data[i];
      prev = data[i];
    }
  }
return arr;
}

function compareFunction(pointa,pointb){
return (pointa.a + pointa.b + pointa.c) - (pointb.a + pointb.b + pointb.c);
}

function equalFunction(pointa,pointb){
return pointa.a == pointb.a && pointa.b == pointb.b && pointa.c == pointb.c;
}

示例 - https://jsfiddle.net/8xu4Lwp2/

答案 1 :(得分:1)

在JavaScript中消除数组中重复项的最简单方法是将其转换为Set,然后再转换回Array。集合不存储重复项。

//不确定为什么setArr没有记录,它在Opera控制台中。

arr=[1,1,2,2,3,3];
console.log(arr);
setArr=new Set(arr);
console.log(setArr);
newArr=[...setArr];
console.log(newArr);

答案 2 :(得分:-1)

酷解决方案:

var unique = Array.from(new Set(arrayWithDuplicatedValue));