2020IT30
判斷題目給出的陣列是不是符合左上至右下之對角線上的數字是一樣的
matrix1 = [
[1,2,3,4],
[5,1,2,3],
[9,5,1,2]
]
output1= true
matrix2 = [
[1,2],
[2,2]
]
output2 = false
先建立雙迴圈
利用雙迴圈轉出的 i j 取到目標元素
用 i+1 與 j+1 找到目標元素右下角的元素
在這裡的 i 是 row 需要先判斷 ary[i+1] 存不存在
同時判斷 ary[i+1][j+1] 這個元素存不存在
如果兩者都符合就去比較 a[i][j] 是否與 ary[i+1][j+1] 一樣
matrix1 = [
[1,2,3,4],
[5,1,2,3],
[9,5,1,2]
]
output1= true
matrix2 = [
[1,2],
[2,2]
]
output2 = false
function diagonal(ary){
for(let i=0; i< ary.length; i++){
for(let j=0; j < ary[0].length; j++){
if(ary[i+1] && ary[i+1][j+1]){
if(ary[i][j] !== ary[i+1][j+1]){
return false
}
}
}
}
return true
}
function expect(a,b){
console.log(a==b)
}
expect(diagonal(matrix1),output1)
expect(diagonal(matrix2),output2)
測試過程一直出各種錯誤,經常會噴出這個位置是 undefined 之類的錯誤訊息,這是因為我是從元素的右下角進行比對,(x,y)==(x+1,y+1) 這樣的座標概念去比較,所以在迴圈跑到子陣列的最後一個元素時,他的右下角沒有元素所以會一直噴錯,需要做個 if 去判斷右下角有無東西
if(ary[i+1] && ary[i+1][j+1])
今天到此為止,有任何問題請在下方留言或透過email、GitHub聯絡我,感謝閱讀
Daily kitty