JavaScript的 - 在相同的行和列值的总和 [英] JavaScript - Sum of values in same rows and columns
问题描述
我有JavaScript数组与数字0和1,我需要在相同的行和列的所有号码的总和(如果我想象我的阵列中的两个维度)。我想创建资金用于在第一个数组的每一个值,第二个阵列。结果
二维数组可视化的第一个项目(价值X-Y表):结果
1 , 1 , 1 , 1 , 1 的结果
1 ,1,1,1,1结果
1 ,1,1,1,1结果
1 ,1,1,1,1结果
1 ,1,1,1,1结果
(总:8值在索引0; 0(与值本身除外))
REAL数组我有:
1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1
(总:8值在索引0)
二维数组可视化第二项:结果 1 , 1 , 1 , 1 ,< b> 1 的结果
1, 1 中,1,1,1结果
1, 1 中,1,1,1结果
1, 1 中,1,1,1结果
1, 1 中,1,1,1搜索结果
(总:8值在索引1; 0)结果
这样,我需要通过整个数组循环。
二维数组可视化第二个项目零的分隔符:结果 1 , 1 , 1 , 1 , 1 的结果1, 1 中,1,1,1结果
1,0,1,1,1结果
1,<击> 1 击>,1,1,1-结果
1,<击> 1 击>,1,1,1-结果
(总:5值与索引1; 0)结果
零后的值,我不想在计数。
有关previous表结果表应该是这样......结果
8,5,8,8,8结果
8,5,8,8,8结果
4,X,6,6,6-结果
8,5,8,8,8结果
8,5,8,8,8结果
非常感谢你的帮助!
VAR解析度= []; //将一维数组持有的款项
VAR哈尔= [
[1,1,1,1],
[1,1,1,1],
[1,0,0,1],
[1,1,0,0]
]; //你的数组
变种vArr = []; //现在,让我们创建一个数组的数组与哈尔的列对于(VAR J = 0; J&LT;哈尔[0]。长度; J ++){
变种临时= [];
对于(VAR I = 0; I&LT; hArr.length;我++){
temp.push(哈尔[I] [J]);
}
vArr.push(临时);
}//总和所有在该行的元素 - 合纵连横
功能SumVH(后腿,VIND){
变种总和= 0;
//添加水平元素
//往左边
为(变量I =(VIND-1); I&GT; = 0;我 - ){
//如果发现一个0,休息
如果(哈尔[后] [I] == 0){
打破;
}
总和+ =哈尔[后肢] [I];
} //在右边
对于(VAR I =(VIND + 1); I&LT;哈尔[后肢]。长度;我++){
//如果发现一个0,休息
如果(哈尔[后] [I] == 0){
打破;
}
总和+ =哈尔[后肢] [I];
} //增加垂直元素
//朝上方
为(变量I =(后-1); I&GT; = 0;我 - ){
//如果发现一个0,休息
如果(vArr [VIND] [I] == 0){
打破;
}
总和+ = vArr [VIND] [I];
} //朝底
对于(VAR I =(后腿+ 1); I&LT; vArr [VIND]。长度;我++){
//如果发现一个0,休息
如果(vArr [VIND] [I] == 0){
打破;
}
总和+ = vArr [VIND] [I];
}
//console.log(\"hInd=\"+hInd+VIND =+ VIND +总和=+总和);
返回总和;
}//经过主阵列,并得到结果
变种sumR = 0;
//每一行的总和
对于(VAR I = 0; I&LT; hArr.length;我++){
对于(VAR J = 0; J&LT;哈尔[I]。长度; J ++){
sumR = SumVH(I,J);
res.push(sumR);
}
}
请检查一下,让你期望它的工作我知道,如果是工作。 RES
变量保存的结果。
I have JavaScript array with numbers 0 and 1 and I need to make a sum of all numbers in same row and column (if I imagine my array in two dimensions). I want to create second array with sums for every single value in first array.
2D array visualization for first item (X-Y table of values):
1,1,1,1,1
1,1,1,1,1
1,1,1,1,1
1,1,1,1,1
1,1,1,1,1
(Sum: 8 for value at index 0;0 (with value itself excluded))
Real array I have:
1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1
(Sum: 8 for value at index 0)
2D array visualization for second item:
1,1,1,1,1
1,1,1,1,1
1,1,1,1,1
1,1,1,1,1
1,1,1,1,1
(Sum: 8 for value at index 1;0)
This way I need to loop through whole array.
2D array visualization for second item with zero separator:
1,1,1,1,1
1,1,1,1,1
1,0,1,1,1
1,1,1,1,1
1,1,1,1,1
(Sum: 5 for value at index 1;0)
Values after zero I don't want to count in.
For previous table the result table should be like...
8,5,8,8,8
8,5,8,8,8
4,x,6,6,6
8,5,8,8,8
8,5,8,8,8
Thank you very much for your help!
var res = []; //the 1D array to hold the sums
var hArr = [
[ 1, 1, 1, 1 ],
[ 1, 1, 1, 1 ],
[ 1, 0, 0, 1 ],
[ 1, 1, 0, 0 ]
]; //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
//to the left
for(var i=(vInd-1); i>=0; i--) {
//if a 0 is found, break
if (hArr[hInd][i] == 0) {
break;
}
sum += hArr[hInd][i];
}
//to the right
for(var i=(vInd+1); i<hArr[hInd].length; i++) {
//if a 0 is found, break
if (hArr[hInd][i] == 0) {
break;
}
sum += hArr[hInd][i];
}
//add vertical elements
//towards top
for(var i=(hInd-1); i>=0; i--) {
//if a 0 is found, break
if(vArr[vInd][i] == 0) {
break;
}
sum += vArr[vInd][i];
}
//towards bottom
for(var i=(hInd+1); i<vArr[vInd].length; i++) {
//if a 0 is found, break
if(vArr[vInd][i] == 0) {
break;
}
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);
res.push(sumR);
}
}
Please check it and let me know if it is working as you expect it to work.
res
variable holds the result.
这篇关于JavaScript的 - 在相同的行和列值的总和的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!