首页 > 解决方案 > javascript中的filter()

问题描述

我对 Codewar 有一个挑战。下面是我的解决方案,但我不明白为什么 return e 和 return arr[i-1] 都返回相同的结果。

var uniqueInOrder=function(iterable){
  
  let arry = typeof iterable === "string" ? iterable.split('') : iterable;
  
  return arry.filter(function(e,i,arr)
    { 
        if(i === 0)
        {
           console.log(e);
           return e;
        }
        else if(arr[i-1] !== e) 
          {
      
            console.log(arr[i-1] );
            return e;
            //return arr[i-1];
          }
      });
}
uniqueInOrder("aaaabbbccdaabbbab");

标签: javascriptfilter

解决方案


filter创建一个从您的回调返回真实值的条目构建的新数组。你的代码总是返回一个真实的值,因为如果i0正在返回e(数组中的一个字符,所有这些都是真实的),如果i不是0,如果使用了 commented-out return arr[i-1],你也会返回数组中的字符之一。

所以你根本没有过滤,只是复制数组。


推荐阅读