首页 新闻 会员 周边

js中数组的filter()方法返回值问题

1
悬赏园豆:10 [已解决问题] 解决于 2017-07-31 11:05

filter():对数组中的每一项运行给定函数,返回该函数会返回true的项组成的数组。item.indexOf("a")的结果是0,即false,那么为什么return item.indexOf("a");的时候最终的返回结果却只排除了数组中的“a”?求高手指教,感激不尽!!!

神秘而清澈的主页 神秘而清澈 | 初学一级 | 园豆:193
提问于:2017-07-30 21:40
< >
分享
最佳答案
1

首先,indexof存在返回元素的位置,不存在返回-1,其次Number转Boolean,除了0和NaN均为true,所以除了'a'之外均为-1,故返回true.望采纳!

收获园豆:7
铁柱成针 | 小虾三级 |园豆:614 | 2017-07-31 10:58

是的,原来是我自己一直以为-1转Boolan是false才导致的纠结,谢谢大家的回答

神秘而清澈 | 园豆:193 (初学一级) | 2017-07-31 11:03
其他回答(3)
0

filter() 方法创建一个新的数组,新数组中的元素是通过检查指定数组中符合条件的所有元素。

注意: filter() 不会对空数组进行检测。

注意: filter() 不会改变原始数组。

或者这样不好理解

var ages = [32, 33, 16, 40];

function checkAdult(age) {
    return age >= 18;
}

类似这样,返回的是32,33,40

同样,item.indexOf("a")是把"a"剔除之后符合条件的返回

收获园豆:1
[3] | 园豆:1174 (小虾三级) | 2017-07-30 22:31

 可是后面的“b”,“c”,"d","e","f"也不符合条件啊,为什么会输出[“b”,“c”,"d","e","f"]?

支持(0) 反对(0) 神秘而清澈 | 园豆:193 (初学一级) | 2017-07-30 23:26
0

return false,就不返回该项啊,不就是结果么

收获园豆:1
codingHeart | 园豆:1511 (小虾三级) | 2017-07-31 08:56

后面的“b”,“c“,”d“,”e”,"f"也是false,为什么会返回了在结果中?

支持(0) 反对(0) 神秘而清澈 | 园豆:193 (初学一级) | 2017-07-31 09:33
0

总感觉你的闭包函数怪怪的,感觉有问题,你可以看看filter的定义,感觉参数传错了

收获园豆:1
寞小陌 | 园豆:104 (初学一级) | 2017-07-31 10:21

filter():对数组中的每一项运行给定函数,返回该函数会返回true的项组成的数组。这是书上对filter()的定义,另外这不是闭包函数,filter()函数的参数解释:item:元素的值,index:元素的索引,array:被遍历的数组。

支持(0) 反对(0) 神秘而清澈 | 园豆:193 (初学一级) | 2017-07-31 10:26
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册