查询在javascript中查找唯一数组

时间:2018-04-01 06:28:10

标签: javascript arrays

我找到脚本来获取js中的唯一数组。当我在过滤函数下使用if条件时,返回没有给出正确的结果但是当我只返回数据时结果是正确的。任何人都可以解释为什么条件检查结果错了吗?

var x= ["apple","orange","banana","apple","mango"];
//var y= x.indexOf('apple');
//alert(y);

function checkdup(x)
{   
    let uniquearr= x.filter(function(val,index,arr){
    //return index== arr.indexOf(val); // return working correctly
    if(arr.indexOf(val)==index)
       {  return index; }   // showing wrong result why

    });
    //return uniquearr;
    console.log(uniquearr);
}

checkdup(x);

1 个答案:

答案 0 :(得分:1)

在决定是否在返回的数组中保留元素时,filter的返回值将转换为truefalse。当你在做什么

return index== arr.indexOf(val);

你正在返回一个布尔值 - 你正在测试这个元素是否是数组中该元素的第一次出现。这很好,这就是你想要的。但是当你

return index;

总是为真,除非index为0 - 这肯定没有达到你想要的效果。