Javascript 在矩阵中添加数字

Javascript 在矩阵中添加数字,javascript,matrix,Javascript,Matrix,我有一个二维数组,我想求该数组中所有值的和,其中值不是-1。 假设我有一个矩阵,它具有以下值: 0,1 = 1.68 1,2 = 1.74 2,0 = 1.61 3,4 = -1 ... 我想把所有不是-1的数字相加 我所做的尝试,显然对我不起作用,是: for(i=0; i<data.length; ++i) { for(j=0; j<data.length; ++j) { if(data[i][j] != -1) { sum += data[i][j]+

我有一个二维数组,我想求该数组中所有值的和,其中值不是-1。 假设我有一个矩阵,它具有以下值:

0,1 = 1.68
1,2 = 1.74
2,0 = 1.61
3,4 = -1
...
我想把所有不是-1的数字相加

我所做的尝试,显然对我不起作用,是:

for(i=0; i<data.length; ++i) {
  for(j=0; j<data.length; ++j) {
    if(data[i][j] != -1) {
      sum += data[i][j]+data[j][i]
    }
  }
}

对于(i=0;i您可以使用嵌套的reduce

const data=[];
var dt=[1,2,3]
数据[0]=dt;
数据[1]=dt;
数据[2]=dt;
var总计=数据减少((n,arr)=>n+arr.reduce((n,val)=>n+val),0);

console.log(total);
我假设您希望将所有值求和到一个平方矩阵中。因此,即使矩阵中的(m,n)=(n,m),求和值的一种简单方法是:

let sum = 0;
for (let i = 0; i < data.length; i++) {
    for (let j = 0; j < data.length; j++) {
        if (data[i][j] !== -1) sum += data[i][j];
    }
}
console.log(sum);
let sum=0;
for(设i=0;i
但是,如果您想进行一些计算,考虑到矩阵中(m,n)=(n,m)的事实,您可以尝试以下方法:

let sum = 0;
for (let i = 0; i < data.length; i++) {
    for (let j = 0; j < data.length; j++) {
        if (data[i][j] !== -1) {
            if (i === j) sum += data[i][j];
            if (j < i) sum += 2*data[i][j];
        }
    }
}
console.log(sum);
let sum=0;
for(设i=0;i
仍然不明白什么是真正的问题语句如果(数据[i][j]!=-!)-你确定这是正确的吗?不应该是-1吗?如果语句不正确,在你输入的代码中什么是
数据[i][j]!=-!
。?是的,这是一个打字错误,应该是数据[i][j]!=-1.这在我的代码中是正确的,就在这里我输入了一个错误。谢谢你指出它,修复它