在不使用 array.map() 的情况下添加任意数量的数组值的 Javascript 矩阵

标签 javascript arrays math matrix angularjs

我正在尝试为我的 AngularJS 应用构建一个辅助函数(但该解决方案不必使用 angular.forEach)。该函数应采用任意数量的具有相同长度的数组,并将这些值加在一起形成一个新数组,例如:

a = [1, 2, 3];
b = [4, 5, 6];
result = [5, 7, 9];

我试图不使用 array.map() 或 sylvesterjs为了 IE8 的兼容性。我坚持循环参数,因为 javascript 似乎不喜欢在 for 循环中嵌套函数。到目前为止的代码:

function arrayAdd () {
  // make sure all args have same length
  var totalLen = 0;
  angular.forEach(arguments, function (arg) {
    totalLen += arg.length;
  });
  var avgLen = totalLen / arguments.length;

  if (avgLen === arguments[0].length) {
    var arrNew = mkArray(0, arguments[0].length);
    // helper function to make an empty array, not shown here

    // need to refactor below with loop for unlimited # of args
    angular.forEach(arguments, function (arg, i) {
      arrNew[0] += arg[0];
    });
    angular.forEach(arguments, function (arg, i) {
      arrNew[1] += arg[1];
    });

    return arrNew;
  } else {
    throw 'arrayAdd expects args with equal length';
  }
}

谢谢!

最佳答案

不需要 map ,您只需要在总计时跟踪数组。

(这不检查数组是否具有相同的长度-)

  function sumArrayElements(){
        var arrays= arguments, results= [], 
        count= arrays[0].length, L= arrays.length, 
        sum, next= 0, i;
        while(next<count){
            sum= 0, i= 0;
            while(i<L){
                sum+= Number(arrays[i++][next]);
            }
            results[next++]= sum;
        }
        return results;
    }

var a= [1, 2, 3], b= [4, 5, 6], c= [1, 2, 3];
sumArrayElements(a, b, c)
/* returned value:(Array)
6, 9, 12
*/

关于在不使用 array.map() 的情况下添加任意数量的数组值的 Javascript 矩阵,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16324399/

相关文章:

javascript - 如何将图像放入数组中

c++ - 在文件中使用 ofstream 时,C6262 堆栈在 C++ 中超出警告

ios - 使用贝塞尔曲线绘制螺旋

math - 在 rust : what is `-inf` ? 上计算时我有 `-inf`

math - 在 Maxima 中简化包含对数和乘积的数学表达式

javascript - 使用 for of 循环计算数组中的多个元素

javascript - jquery版本错误

javascript - 带有内部链接的 Bootstrap 侧边菜单在点击时跳转

MySQL在临时表中创建任意日期或数字列表?

arrays - MATLAB:在多维数组中查找值的坐标