Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/ruby-on-rails-4/2.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_Duplicates - Fatal编程技术网

Javascript 删除阵列中的重复项

Javascript 删除阵列中的重复项,javascript,duplicates,Javascript,Duplicates,这不起作用: result = [1, 4, 5, 5, 5]; var newData = result.reduce(function(acc, cur) { if (cur in acc === false) { acc.push(cur); } return acc; },[]); console.log(newData); 输出: [1, 4, 5, 5, 5] 我知道一种可行的方法,比如用以下代码替换if()条件: if (acc.length == 0 || acc[a

这不起作用:

result = [1, 4, 5, 5, 5];

var newData = result.reduce(function(acc, cur) {
if (cur in acc === false) {
  acc.push(cur);
}
return acc;
},[]);

console.log(newData);
输出:

[1, 4, 5, 5, 5]
我知道一种可行的方法,比如用以下代码替换
if()
条件:

if (acc.length == 0 || acc[acc.length-1] !== cur) {
  acc.push(cur);
} 
其中给出了预期输出:

[1, 4, 5]
我的问题是为什么第一种方法不起作用

如果指定的属性位于指定的对象或其原型链中,in运算符将返回true

对于
结果
中的每个值,它都返回
false
。因此,您将在累加器中获得结果的所有值。对于数组,中的
检查索引

var结果=[1,4,5,5,5];
var newData=结果减少(函数(acc、cur){
if(acc中的当前===假){
acc.push(当前);
}
返回acc;
},[]);

console.log(newData)(即检查密钥是否存在)。
中的
不起作用。您可以尝试将以下内容更改为:
acc中的cur===false
:acc.indexOf(cur)==-1