我找到脚本来获取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);
答案 0 :(得分:1)
在决定是否在返回的数组中保留元素时,filter
的返回值将转换为true
或false
。当你在做什么
return index== arr.indexOf(val);
你正在返回一个布尔值 - 你正在测试这个元素是否是数组中该元素的第一次出现。这很好,这就是你想要的。但是当你
return index;
总是为真,除非index
为0 - 这肯定没有达到你想要的效果。