【问题标题】:JavaScript - Making a sum of values in same row and columnJavaScript - 在同一行和列中计算值的总和
【发布时间】:2015-07-10 10:34:20
【问题描述】:

如何对同一行和同一列中的值求和,然后生成另一个结果数组(可以是一维)。

Array [
    [ 1, 1, 0, 1 ],
    [ 1, 1, 1, 1 ],
    [ 1, 1, 1, 1 ],
    [ 1, 1, 0, 1 ]
]

【问题讨论】:

  • 到目前为止你尝试了什么??
  • 类似...for (var iX = 0; iX < countInLine; iX++) { for (var iY = 0; iY < countInLine; iY++) { if($(this).hasClass("barrier") == false) { if (indexX == iX) { count++; } else if (indexY == iY) { count++; } } }

标签: javascript arrays multidimensional-array


【解决方案1】:
var res = [];  //the 1D array to hold the sums
var hArr =  [
   [ 1, 1, 0, 1 ],
   [ 1, 1, 1, 1 ],
   [ 1, 1, 1, 1 ],
   [ 1, 1, 0, 1 ]
]; //your array


var vArr = []; //Now lets create an array of arrays with the columns of hArr

for (var j=0; j<hArr[0].length; j++) {
  var temp = [];
  for (var i=0; i<hArr.length; i++) {
      temp.push(hArr[i][j]);
  }
  vArr.push(temp);
}

//sum all the element in the line - Vertically and Horizontally
function SumVH (hInd, vInd) {
  var sum = 0;
  //add horizontal elements
  for(var i=0; i<hArr[hInd].length; i++) {
    sum += hArr[hInd][i];
  }
  //add vertical elements
  for(var i=0; i<vArr[vInd].length; i++) {
    sum += vArr[vInd][i];
  }
  //console.log("hInd="+hInd+" vInd="+vInd+" Sum="+sum);
  return sum;
}

// go through the main array and get result
var sumR = 0;
//sum of each row
for (var i=0; i<hArr.length; i++) {
   for (var j=0; j<hArr[i].length; j++) {
      sumR = SumVH(i,j) - (2 * hArr[i][j]);
      res.push(sumR);
   }   
}

请立即检查。变量res 保存结果

对于上面写的数组,我想要像 7、7、5、7、8、8 这样的结果数组, 6、8、8、8、6、8、7、7、5、7

现在上面的代码不计算数字本身的总和。但是要获得结果作为您的评论,请替换此行

sumR = SumVH(i,j) - (2 * hArr[i][j]);

sumR = SumVH(i,j);

谢谢。

【讨论】:

  • 非常感谢 - 我马上就试试。
  • 这不像我预期的那样工作。对于上面写的数组,我想要7, 7, 5, 7, 8, 8, 6, 8, 8, 8, 6, 8, 7, 7, 5, 7 这样的结果数组,但我得到4, 4, 3, 3, 2, 4, 4, 4
  • 请访问此页面。它描述了我想要更好的东西。 stackoverflow.com/questions/31294579/…
  • 好的,我知道了。现在就做。
  • 编辑了答案。请立即检查。它应该工作。 @JanChalupa
猜你喜欢
  • 1970-01-01
  • 2018-03-13
  • 2015-09-26
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-06-29
  • 2016-06-03
相关资源
最近更新 更多