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

JavaScript中使用.filter()筛选矩阵全正整数行的问题求助

解决矩阵中筛选全正整数行的问题

嘿,别担心,刚接触二维数组的filter()确实容易卡壳,我刚学JS的时候也在这里绕了半天~咱们一步步来理清楚:

首先先提个小细节:你现在的单数组处理代码里,函数名是positiveRowsOnly,但返回的是ind < 0的元素(也就是负数),这应该是笔误啦,正确筛选正整数的话应该改成return Number.isInteger(ind) && ind > 0——毕竟你要的是正整数,不只是正数,对吧?

回到矩阵的问题:矩阵其实就是「数组的数组」,所以我们需要两层判断:

  • 外层用filter()遍历矩阵的每一行,筛选出符合条件的行
  • 对每一行,需要检查所有元素都是正整数,这里就要用到every()方法——它会验证数组里的每一个元素都满足条件,只有全部满足才返回true

给你写个完整的示例代码:

function positiveRowsOnly(matrix) {
  // 外层filter:遍历矩阵的每一行,筛选合格的行
  return matrix.filter(row => {
    // 内层every:检查当前行的所有元素是否都是正整数
    return row.every(num => {
      return Number.isInteger(num) && num > 0;
    });
  });
}

// 测试一下效果
console.log(positiveRowsOnly([
  [1, 10, 2],          // 全正整数,保留
  [-100, 2, -20],      // 有负数,排除
  [200, 3, 30],        // 全正整数,保留
  [300, 5.5, 10]       // 有小数,排除
]));
// 输出结果:[[1, 10, 2], [200, 3, 30]]

简单解释下逻辑:

  1. 外层matrix.filter(row => ...)会把矩阵里的每一行拿出来检查
  2. 对每一行row,调用row.every(...)——只要有一个元素不是正整数,every()就返回false,这一行就会被过滤掉;只有所有元素都符合条件,every()返回true,这一行才会被保留到结果数组里

这样是不是就清晰多啦?如果还有疑问随时问~

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.20 10:27:57