簡體   English   中英

無法讀取未定義的屬性 -1

[英]Cannot read property -1 of Undefined

在hackerrank.com上做對角差分代碼挑戰,我在代碼末尾收到了這個錯誤,問題是,我不知道-1來自哪里......

function diagonalDifference(arr) {
  // Write your code here
  var val1 = 0, val2 = 0;

  for(let i = 0; i <= 2; i++) {
    for(let j = i; j < arr.length; j++) {
      val1 += arr[i][j];
      i++;
    }
  }
  for(let i = 0; i <= 2; i++) {
    for(let j = 2; j => 0; j--) {
      console.log(arr[i][j])
      val2 += arr[i][j];
      i++;
    }
  }
  val1 + val2 < 0 ? -(val1 + val2) : val1 + val2;
}

錯誤在於 val2 += arr[i][j],但由於 j 的最小值為 0,那么 -1 可能來自哪里? 這也是錯誤:

console.log(arr[i][j])
                  ^
TypeError: Cannot read property '-1' of undefined

問題是運算符在這一行中顛倒了:

for(let j = 2; j => 0; j--) {

它應該是:

for(let j = 2; j >= 0; j--) {

(也就是說,=< 應該是 <=。)

此外,在內部循環中有 i++ 會導致外部循環只運行一次。

function diagonalDifference(arr) { // Write your code here let val1 = 0, val2 = 0; const arrLength = arr.length let x = 0; for(let y = 0; y < arrLength; y++) { val1 += arr[y][x] x++ } let x2 = arrLength - 1; for(let y2 = 0; y2 < arrLength; y2++) { val2 += arr[y2][x2] x2-- } return Math.abs(val1 - val2) }

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM