【问题标题】:How to sum elements of two multidimensional arrays?如何对两个多维数组的元素求和?
【发布时间】:2019-01-21 09:40:24
【问题描述】:

我有 2 个多维数组:

[[230.0], [10.0], [12.0]]

[[50.0], [60.0], [89.0]]

我试图将每个元素相加并保持相同的数组结构。所以它应该是这样的:

[[280.0], [70.0], [101.0]]

我试过了:

 var sum = array1.map(function (num, index) {
  return num + array2[index];
   });

但我明白了:

    [23050, 1060, 1289]

任何帮助将不胜感激。谢谢。

【问题讨论】:

    标签: javascript multidimensional-array google-sheets


    【解决方案1】:

    变成这样

    var sum = array1.map(function (num, index) {
      return parseInt(num) + parseInt(array2[index]);
       });
    

    您应该制作 parseIntparseFloat 以便它可以使用它们转换 string

    【讨论】:

    • 这是解决尝试添加两个数组的副作用,实际上并没有解决问题。
    • 他正在添加两个整数数组 [1] + [1],然后 JS 引擎将其解释为“1”+“1”,在我看来,这是解决此问题的副作用。最好的解决方案是展平内部数组,然后执行两个整数的简单相加。
    【解决方案2】:

    步骤

    1. 遍历数组中的每个数字(数组长度)。
    2. 对两个数组中相同索引的对象求和。
    3. 将总和推入另一个数组以获得结果。如果输入是字符串,则使用 parseFloat。
    4. (可选)使用 .toFixed(1) 将小数位设置为 1 位。

    const arr1 = [[230.0], [10.0], [12.0]]
    const arr2 = [[50.0], [60.0], [89.0]]
    
    let sum = []
    for (let i = 0; i < arr1.length; i++){ // Assume arr1 and arr2 have the same size
      let eachSum = parseFloat(arr1[i]) + parseFloat(arr2[i])
      sum.push([eachSum.toFixed(1)])
    }
    
    console.log(sum)

    【讨论】:

      【解决方案3】:

      您正试图在 map 函数中添加两个数组结构。

      所以一个解决方案可以让您看到正在发生的事情......

      array1.map((a,i) => a[0] + array2[i][0])
      

      控制台截图...

      【讨论】:

        【解决方案4】:

        您使用的代码只需要一个级别,而不考虑嵌套数组。通过使用只有一个元素且没有内部数组索引的 na 数组并使用运算符,如 +,原型函数 toString 被调用并连接字符串(单个元素作为字符串,没有 , 作为分隔符) 返回并添加。结果是一个字符串,而不是使用+ 进行数值运算的结果。


        您可以采用递归方法并检查该值是否为数组,然后使用嵌套元素再次调用该函数。

        function sum(a, b) {
            return a.map((v, i) => Array.isArray(v) ? sum(v, b[i]) : v + b[i]);
        }
        
        console.log(sum([[230], [10], [12]], [[50], [60], [89]]))

        【讨论】:

          【解决方案5】:

          在地图 fn 内你应该:

          return parseInt(num) + parseInt(array2[index]);
          

          发生这种情况是因为当您尝试添加它们时,这些变量是数组而不是整数。因此它们被评估为字符串并连接起来。

          【讨论】:

            猜你喜欢
            • 1970-01-01
            • 1970-01-01
            • 2021-01-30
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 2021-08-11
            相关资源
            最近更新 更多