Javascript:for循环返回布尔值数组而不是数组
问题描述:
在我的代码中,我创建了fn
回调函数,返回values < 2
,map
函数中的循环遍历作为参数传递的数组。但控制台登录,而不是布尔值Javascript:for循环返回布尔值数组而不是数组
我在做什么错的阵列?
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
结果是布尔:
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);
答
校正代码:
var newarr = []
function fn(val){
return val < 3;
}
function map(arr){
for (var i = 0; i < arr.length; i++){
if(fn(arr[i]))
newarr.push(arr[i]);
}
console.log(newarr);
}
map ([1,2,3,4,5,6], fn);
和ES6为同一解决方案代码
var newarr = [1,2,3,4,5,6].filter(function(item){
return item<3;
})
console.log(newarr);
答
阅读本 - Array.prototype.filter
var arr = [1,2,3,4,5,6];
var newArr = arr.filter((val) => val < 3); // [1,2]
'VAL Nemani