You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何获取判断数值是否小于10的布尔数组?

问题:如何判断数组中每个元素是否小于10,并返回布尔数组?

嗨呀,完全不用不好意思~初学者踩这种小坑太正常啦!我来帮你捋清楚问题出在哪,以及怎么得到你想要的结果。

首先先看你写的代码:

function underTen (arr){
  let underTenAnswer = arr.forEach(function(n){
    if (n < 10) { true; } else { false; }
  })
}

这里有两个关键问题:

  • forEach方法的作用只是遍历数组执行回调函数,它本身不会返回任何值(准确说是返回undefined),所以你把它的结果赋值给underTenAnswer,最后得到的只会是undefined
  • 你的回调函数里写了true和false,但既没有把它们返回,也没有把它们存到某个地方,相当于白写啦

那怎么改呢?其实你一开始想到的map方法才是最适合这个场景的!map的核心作用就是遍历数组,对每个元素执行回调,然后把回调的返回值收集起来组成一个新数组返回,完美匹配你的需求。

方法1:用map实现(最简洁推荐)

function underTen(arr) {
  return arr.map(function(n) {
    return n < 10; // 直接返回判断结果,不用if-else也能搞定哦
  });
}

如果想更简洁,还可以用ES6的箭头函数:

const underTen = arr => arr.map(n => n < 10);

方法2:如果非要用forEach,可以手动收集结果

要是你想试试用forEach实现,那需要自己创建一个数组来存判断结果:

function underTen(arr) {
  let underTenAnswer = []; // 先初始化一个空数组
  arr.forEach(function(n) {
    underTenAnswer.push(n < 10); // 把每个元素的判断结果推到数组里
  });
  return underTenAnswer; // 最后返回这个结果数组
}

现在测试一下:
输入underTen([1,9,12,19,4,16]),就能得到你想要的[true, true, false, false, true, false]啦!

最后给你总结几个小知识点:

  • 当需要基于原数组生成新数组时,优先用map,它就是专门干这个的
  • forEach更适合做不需要返回值的遍历操作,比如打印元素、修改原数组里的内容
  • 简单的布尔判断可以省略if-else,直接返回判断表达式的结果,代码会更简洁

内容的提问来源于stack exchange,提问作者Nathan Lima

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.04.28 23:39:04