【问题标题】:Find Sum of 2d Array in Javascript row wise and column wise [closed]在Javascript行和列中查找二维数组的总和[关闭]
【发布时间】:2017-02-26 17:51:31
【问题描述】:

我想像这样对数组求和

1 1 2 =4

2 2 1 =5

3 3 1 =7

= = =

6 6 4

我想在 html 中使用 java 脚本打印这样的数组总和。

【问题讨论】:

  • 你有没有尝试过?行应该很简单,列也不会更难......
  • 这是给你的作业吗
  • 它应该只需要几个嵌套的 for 循环,一个遍历每一行中的每个单元格,一个遍历每一列中的每个单元格。
  • arr = new Array(3) arr[0]= new Array(3) arr[1]= new Array(3) arr[2]= new Array(3) for(i=0 ;i") for(i=0;i") } for(i=0;i
  • 我做了这个 lolz 不需要解决 ;)

标签: javascript


【解决方案1】:

首先将问题分解为更小的部分。我定义了一个基本的sum 函数,它是使用更基本的add 函数定义的。 mapping sum 在输入数组上会给你水平和。

垂直总和稍微复杂一些,但不是太难。我定义了一个 transpose 函数来旋转我们的矩阵。旋转后,我们可以用同样的方式sum 行。

此解决方案适用于任何 MxN 矩阵

// generic, reusable functions
const add = (x,y) => x + y
const sum = xs => xs.reduce(add, 0)
const head = ([x,...xs]) => x
const tail = ([x,...xs]) => xs

const transpose = ([xs, ...xxs]) => {
  const aux = ([x,...xs]) =>
    x === undefined
      ? transpose (xxs)
      : [ [x, ...xxs.map(head)], ...transpose ([xs, ...xxs.map(tail)])]
  return xs === undefined ? [] : aux(xs)
}

// sample data
let numbers = [
  [1,1,1],
  [2,2,2],
  [3,3,3],
  [4,4,4]
]

// rows
console.log(numbers.map(sum))
// [ 3, 6, 9, 12 ]

// columns
console.log(transpose(numbers).map(sum))
// [ 10, 10, 10 ]

【讨论】:

  • 谢谢,但我有其他方法来解决它
  • @dilshad,是的,我明白了,但是 for 循环解决方案就像洞穴墙上的标记一样粗糙。
  • 我知道 OP 要求特定场景,但您的代码仅适用于 NxN 数组。
  • @naomik 尝试:numbers = [ [1,1,2], [2,2,1], [3,3,1], [5,4,3] ]。 cols 将导致:[11, 10, 7, NaN]
  • @naomik let cols = numbers[0].map((_, i) => sum(numbers.map(index(i)))) 应该可以工作。
猜你喜欢
  • 2022-01-02
  • 2013-03-16
  • 1970-01-01
  • 2020-06-16
  • 2018-03-14
  • 2013-01-25
  • 1970-01-01
  • 2015-12-13
  • 1970-01-01
相关资源
最近更新 更多