在我下面的代码中,我创建了一个 fn
回调函数返回 values < 2
,在 map
中的循环之后函数遍历作为参数传递的数组。但是控制台正在记录一个 bool 数组而不是值
我做错了什么?
var newarr = []
function fn(val){
return val < 3;
}
function map(arr){
for (var i = 0; i < arr.length; i++){
newarr.push(fn(arr[i]));
}
console.log(newarr);
}
map ([1,2,3,4,5,6], fn);
我的结果
[ true, true, false, false, false, false ]
最佳答案
这是因为 fn
的结果是 bool 值:
return val < 3; // true or false
如果你需要过滤元素,那么逻辑应该有点不同,名称应该是filter
,而不是map
:
var newarr = [];
function fn(val) {
return val < 3;
}
function filter(arr) {
for (var i = 0; i < arr.length; i++) {
if (fn(arr[i])) {
newarr.push(arr[i]);
}
}
console.log(newarr);
}
ES6 还原生支持Array#filter
函数:
let newArray = arr.filter(item => item < 3);
关于Javascript:for循环返回 bool 数组而不是值数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45935136/