Javascript:for循环返回 bool 数组而不是值数组

标签 javascript arrays callback

在我下面的代码中,我创建了一个 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/

相关文章:

c++ - 二维数组Qt,初始化和使用

javascript - 在新表单上使用 JavaScript 创建多个共享点项目,但延迟下一页加载,直到所有共享点项目都创建完成

javascript - Fancybox 在同一页面上使用多个画廊

javascript - 页面打开时从#7495BA 淡入#67C65D

javascript - 修改 this.state 中的一项会删除 React JS State Object 中的所有其他项

PHP/MYSQL 添加带有嵌套 foreach 的列

javascript - 替换网页中无法访问的 javascript

javascript - javascript中的json数组递归循环

javascript - 通过引用 Javascript 中的另一个函数来传递对象方法

Jquery 自定义函数不在 ajax 加载的内容上定位 div