javascript - 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");
解决方案
filter
创建一个从您的回调返回真实值的条目构建的新数组。你的代码总是返回一个真实的值,因为如果i
你0
正在返回e
(数组中的一个字符,所有这些都是真实的),如果i
不是0
,如果使用了 commented-out return arr[i-1]
,你也会返回数组中的字符之一。
所以你根本没有过滤,只是复制数组。
推荐阅读
- javascript - 选择后 Dojo Javascript 过滤选择框为空
- javascript - 从输入框中删除所有空格,es6
- html - 使用查询获取请求在 VBA 中解析 Html
- c++ - 调用 reserve() 后 std::vector 的空间复杂度
- processing - 如何使图像到达特定点后立即消失
- java - api测试期间的SpringBoot Nullpointer异常
- c++ - Eigen c ++:复矩阵的面积双曲正切(atanh)
- android - Firebase 同步方法不同步
- javascript - 如何将数组中对象的属性复制到另一个数组中的另一个对象?
- python - 将 json 响应 (w/python3) 下载到文件中