Javascript 使用reduce和find的数组中唯一的数字

Javascript 使用reduce和find的数组中唯一的数字,javascript,Javascript,我正在尝试使用reduce和find助手编写一个数组函数,返回一个唯一数字数组 var数=[1,1,2,3,4,4]; //函数应该返回[1,2,3,4] 函数唯一(数组){ array.reduce((uniqueArray,number)=>{ if(uniqueArray.indexOf(find(array.number))){ uniqueArray.push(array.number); } 返回唯一数组; }, []); } console.log(唯一(数字)); //未定义

我正在尝试使用reduce和find助手编写一个数组函数,返回一个唯一数字数组

var数=[1,1,2,3,4,4];
//函数应该返回[1,2,3,4]
函数唯一(数组){
array.reduce((uniqueArray,number)=>{
if(uniqueArray.indexOf(find(array.number))){
uniqueArray.push(array.number);
}
返回唯一数组;
}, []);
}
console.log(唯一(数字));
//未定义

//未定义
您需要返回声明

return array.reduce((uniqueArray // ...
// ^^^
还有一些更好的方法

函数唯一(数组){
返回数组.reduce((uniqueArray,number)=>{
if(uniqueArray.indexOf(number)=-1){
uniqueArray.push(数字);
}
返回唯一数组;
}, []);
}
变量数=[1,1,2,3,4,4];

console.log(唯一(数字))您几乎没有错误。首先,您需要从函数返回值,还需要检查元素是否已经在
uniqueArray
中,您可以使用
indexOf()
==
-1

var数=[1,1,2,3,4,4];
函数唯一(数组){
返回数组.reduce((uniqueArray,number)=>{
if(uniqueArray.indexOf(number)=-1)uniqueArray.push(number)
返回唯一数组;
}, []);
}

console.log(唯一(数字))前面的答案解释了错误的原因。所以我只是用方法添加了一个替代方法

var数=[1,1,2,3,4,4];
//函数应该返回[1,2,3,4]
函数唯一(数组){
返回数组.过滤器(函数(v,i,arr){
//将索引与第一个元素索引进行比较
返回i==arr.indexOf(v);
})
}

console.log(唯一(数字))您可以始终使用
数组。包括

function SillyFunctionName(array) {
    "use strict";

    var uniqueArray = [];

    for (var i = 0; i < array.length; i++) {
        if (uniqueArray.includes(array[i])) {
            break;
        } else {
            uniqueArray.push(array[i]);
        }
    }

    return uniqueArray;
}
函数SillyFunctionName(数组){
“严格使用”;
var uniqueArray=[];
对于(var i=0;i
和的副本?可能的副本,除非他必须使用reduce和find-这就是我没有关闭锤子的原因it@mplungjan链接问题不使用reduce和find helper。这就是为什么我没有实际关闭,因为duplicateincludes很好,但它在edge中不起作用,实际上,
find
在包含
0
的数组上不起作用。你应该使用
some
或者干脆使用
includes
@Bergi,那么indexOf更好,至少是find。是的。另一种选择(只要数组不包含数字)是
…find(…)!=null
这就是我所说的“如果数组只包含数字”(而
未定义的
不是)