我尝试从数万个点绘制图表,但因为这个数字太大了我需要减少它。他们中的许多人都有重复。我尝试用这个来减少数量:
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”不同。
答案 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;
}
答案 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));