Javascript 使用不带函数的.filter()方法
我在codewars上看到了这个解决方案Javascript 使用不带函数的.filter()方法,javascript,Javascript,我在codewars上看到了这个解决方案 "strict mode"; let testarr = [true,true,false,true,true]; function countSheeps(arrayOfSheeps) { return arrayOfSheeps.filter(Boolean).length; } console.log(countSheeps(testarr)) 这是怎么回事?我认为filter方法要工作,必须向其中传递函数,而不是数据类型或值。我
"strict mode";
let testarr = [true,true,false,true,true];
function countSheeps(arrayOfSheeps) {
return arrayOfSheeps.filter(Boolean).length;
}
console.log(countSheeps(testarr))
这是怎么回事?我认为filter方法要工作,必须向其中传递函数,而不是数据类型或值。我用一个数字数组尝试了这个方法,并用“数字”和实际数字(如3)替换了“布尔”一词。但是这不起作用-那么为什么它在这里使用布尔值呢?它使用了,它可以用作函数
Boolean(1); // => true
Boolean(0); // => false
布尔值是一个函数,而.filter方法接受函数
Boolean(1); // => true
Boolean(0); // => false
所以它和下面的代码一样
“严格模式”;
设testarr=[true,true,false,true,true];
函数countSheeps(arrayOfSheeps){
返回arrayOfSheeps.filter((sheep)=>Boolean(sheep)).length;
}
控制台日志(countSheeps(testarr))
不是数据类型。试试布尔型的类型。哦,好的,那么真的和假的数据类型是布尔型的?更准确地说,“哪一个是函数”。