Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/arrays/13.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 从数组中获取不同的重复项_Javascript_Arrays - Fatal编程技术网

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 ]