首先,indexof存在返回元素的位置,不存在返回-1,其次Number转Boolean,除了0和NaN均为true,所以除了'a'之外均为-1,故返回true.望采纳!
是的,原来是我自己一直以为-1转Boolan是false才导致的纠结,谢谢大家的回答
filter() 方法创建一个新的数组,新数组中的元素是通过检查指定数组中符合条件的所有元素。
注意: filter() 不会对空数组进行检测。
注意: filter() 不会改变原始数组。
或者这样不好理解
var ages = [32, 33, 16, 40];
function checkAdult(age) {
return age >= 18;
}
类似这样,返回的是32,33,40
同样,item.indexOf("a")是把"a"剔除之后符合条件的返回
可是后面的“b”,“c”,"d","e","f"也不符合条件啊,为什么会输出[“b”,“c”,"d","e","f"]?
return false,就不返回该项啊,不就是结果么
后面的“b”,“c“,”d“,”e”,"f"也是false,为什么会返回了在结果中?
总感觉你的闭包函数怪怪的,感觉有问题,你可以看看filter的定义,感觉参数传错了
filter():对数组中的每一项运行给定函数,返回该函数会返回true的项组成的数组。这是书上对filter()的定义,另外这不是闭包函数,filter()函数的参数解释:item:元素的值,index:元素的索引,array:被遍历的数组。