如何将多维数组内的所有值相乘

时间:2018-12-18 14:37:42

标签: javascript arrays

我有这样的输出(多维数组);

    (4) [Array(3), Array(2), Array(2), Array(2)]
    0: (3) [9, 8, 9]
    1: (2) [5, 6]
    2: (2) [6, 7]
    3: (2) [4, 4]
    length: 4
    __proto__: Array(0)

我想获取每个值并将它们相乘并返回值。我该怎么办?

4 个答案:

答案 0 :(得分:0)

您可以使用.reduce来做到这一点。

您只需要加入数组即可获得有效数字。

[9, 8, 9].join('') == 989

之后,将它们相乘即可得到所需的输出

查看示例:

var arr =  [[9, 8, 9],[5, 6],[6, 7],[4, 4]];

var res = arr.reduce(function (a,b) {
  return a * b.join('');
}, 1);

console.log(res)

答案 1 :(得分:0)

喜欢吗?

function multiply(array){
  var x=1
  for(i in array){
    x*=parseInt(array[i].join(""))
  }
  return x
}
var something=[[9,8,9],[5,6],[6,7],[4,4]]
console.log(multiply(something))
希望对您有所帮助!

答案 2 :(得分:0)

您可以使用reduce。

const data = [[9, 8, 9], [5, 6], [6, 7], [4, 4]];

const result = data.reduce((acc, val) => val.join('') * acc, 1);

console.log(result);

答案 3 :(得分:0)

首先,如果您需要将数字连接成一个数字,则可能应该检查为什么数字会作为数组出现。但是,使用您提供给我们的东西...

首先,您必须获取每个内部数组并将其作为一个数字连接。我能想象到的最好方法是将每个数字强制转换为字符串,然后将它们连接起来,然后强制转换为Number,如下所示:

const numbersArray = outerArray
  .map(innerArray =>
    innerArray.map(number => number.toString()).join(''))
  .map(Number)

在映射数组之后,您可以reduce将其numbersArray.reduce((product, each) => product * each, 1) 乘以一个整数(沿1递增,因为我们不希望初始值改变结果):

implementation 'com.android.support.test:runner:1.0.2' //wrong!!