我想要像这样的数组的总和
1 1 2 = 4
2 2 1 = 5
3 3 1 = 7
= = =
6 6 4
我想在html中使用java脚本打印这样的数组。
答案 0 :(得分:13)
首先将问题分解为小块。我定义了一个基本的sum
函数,它使用更基本的add
函数定义。输入数组上的map
ping 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 ]