如何保留数组的重复项
在Javascript中,我试图只在一个数组中保留Duplicates。
例如,我的初始数组是
[1,1,2,3,3,3,3,4,5,5]
结果应该是
[1,3,5]
我曾尝试使用.indexOf()和$ .inArray(),但无法理解。 我知道如何删除Duplicates,但保留它们非常困难。
您可以通过检查项目是否是第一个以及最后一个索引是否不是实际索引来进行筛选。
var array = [1, 1, 2, 3, 3, 3, 3, 4, 5, 5], result = array.filter((a, i, aa) => aa.indexOf(a) === i && aa.lastIndexOf(a) !== i); console.log(result);
您可以使用array#reduce
来计算每个值的频率,然后使用count array#filter
值,其数量大于1。
var data = [1,1,2,3,3,3,3,4,5,5]; var count = data.reduce((o,v)=>{ o[v] = o[v]+1 || 1; return o; },{}); var duplicate = Object .keys(count) .filter(k => count[k] > 1) .map(Number); console.log(duplicate);
.as-console-wrapper { max-height: 100% !important; top: 0; }
这是我的程序解决方案:
var arr = [1,1,2,3,3,3,3,4,5,5] var arr2 =[]; for(var i=0; i < (arr.length-1); i++){ if (arr2.indexOf(arr[i]) > -1 || arr[i] != arr[i+1]){ //Do Nothing and move on to the next set } else{ arr2.push(arr[i]); } }