【问题标题】:How to check on each element of this 2d Array? [duplicate]如何检查这个二维数组的每个元素? [复制]
【发布时间】:2020-09-15 10:55:48
【问题描述】:

我正在尝试通过循环检查这个二维数组的每个元素:

matrix = [[0, 1, 1, 2], 
          [0, 5, 0, 0], 
          [2, 0, 3, 3]]

但是,当我这样做时:return matrix.length 我得到一个3。我怎么可能遍历它来检查每个值?

另外,考虑到我也可能得到这样的数组:

[[2], 
 [5], 
 [10]]

【问题讨论】:

  • 请提及预期内容
  • 为什么不使用两个嵌套循环?
  • @VLAZ OP 可能应该付出更多的努力,但是,像 Ifaruki 的 .flat().length 这样的简短而优雅的解决方案值得一提
  • @user120242 我不相信 OP 需要数组中的项目总数。问题提到检查每个元素。它还提到了长度,但我不相信这是要求的。无论哪种方式,这个问题都不清楚 - 我对 OP 想要什么做了最好的猜测。
  • @VLAZ 有道理。我正在尝试对数组的元素求和。尽管如此,我不想让 stackoverflow 为我解答谜题。

标签: javascript


【解决方案1】:

减少,添加每个长度并累加总和

matrix = [[0, 1, 1, 2], 
          [0, 5, 0, 0], 
          [2, 0, 3, 3]]
          
console.log(
matrix.reduce((sum,x)=>sum+x.length,0)
)

【讨论】:

    【解决方案2】:

    使用.flat() 并在其后添加.length

    let matrix = [[0, 1, 1, 2], 
                  [0, 5, 0, 0], 
                  [2, 0, 3, 3]]
              
    let result = matrix.flat().length;
    console.log(result);
     
    //sum
    
    let sum = matrix.flat().reduce((a,b) => a + b);
    console.log(sum);

    如果您想在旧版浏览器上运行此代码,您可能需要一个 Polyfill。查看支持:

    https://developer.mozilla.org/de/docs/Web/JavaScript/Reference/Global_Objects/Array/flat

    https://caniuse.com/#search=flat

    【讨论】:

    • @DanielLogvin 我读到你需要总和,我添加了一个 .reduce() 来获得总和
    • 我会提到Array#flat 是一个相对较新的功能(在 ES2019 中标准化),因此,如果代码在客户端使用并且未转译,则 OP 可能需要一个polyfill...
    • @FZs 是的,适用于所有现代网络浏览器,期望 IE ofcorse developer.mozilla.org/de/docs/Web/JavaScript/Reference/… 但我会提到它
    猜你喜欢
    • 2022-01-20
    • 1970-01-01
    • 1970-01-01
    • 2017-10-05
    • 2012-07-04
    • 2018-09-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多