Javascript 从数组中获取不同的重复项
我有一个数组Javascript 从数组中获取不同的重复项,javascript,arrays,Javascript,Arrays,我有一个数组[1,1,1,2,3,4,5,5,6,7,8,8] 如何获取不同重复项的数组[1,5,8]-结果中的每个重复项仅一次,而不管它在原始数组中出现多少次 我的代码: var types = availControls.map(item => item.type); var sorted_types = types.slice().sort(); availControlTypes = []; for (var i = 0; i < sorted_types.length -
[1,1,1,2,3,4,5,5,6,7,8,8]
如何获取不同重复项的数组[1,5,8]
-结果中的每个重复项仅一次,而不管它在原始数组中出现多少次
我的代码:
var types = availControls.map(item => item.type);
var sorted_types = types.slice().sort();
availControlTypes = [];
for (var i = 0; i < sorted_types.length - 1, i++) {
if (sorted_types[i + 1] == sorted_types[i])
availControlTypes.push(sorted_types[i]);
}
var-types=availControls.map(item=>item.type);
var sorted_types=types.slice().sort();
availControlTypes=[];
对于(var i=0;i
这会得到重复的,但不是唯一的。您需要一个for循环,其中包含一个对象,该对象将保存该数字在数组中出现的次数。当计数已经为1时,我们可以将该项添加到结果中。我们应该继续增加计数器,这样我们就不会添加同一个数字的多个副本(尽管我们可以在2处停止)
功能fn(arr){
变量计数={};
var结果=[];
var n;
对于(变量i=0;i
ES6 1班轮。
这与我们查找唯一值的方式非常相似,只是我们不过滤第一次出现的值,而是过滤第二次出现的值
let=(a,n=1)=>a.filter((v,i)=>a.filter((vv,ii)=>vv==v&&ii这样就可以了
var输入=[1,1,1,2,3,4,5,5,6,7,8,8];
让filterDuplicates=arr=>[…新集合(arr.filter((项目,索引)=>arr.indexOf(项目)!=index))]
控制台日志(过滤器副本(输入))
好的,你的代码在哪里?你需要帮助的复杂部分是什么?@Dalorzo补充道。.map
和arrow函数是ES6的功能…你确定你使用的是ES5之前的代码吗?不确定,我试过使用…Set
,但它不起作用…但我排除了这个问题,这个问题的公认答案是什么你需要
const dupes = arr =>
Array.from(
arr.reduce((acc, item) => {
acc.set(item, (acc.get(item) || 0) + 1);
return acc;
}, new Map())
)
.filter(x => x[1] > 1)
.map(x => x[0]);
const arr = [1, 1, 1, 1, 2, 3, 4, 5, 5, 6, 7, 8, 8, 8];
console.log(dupes(arr));
// [ 1, 5, 8 ]