javascript - js 二維數(shù)組比較大小問題。
問題描述
報錯:Uncaught TypeError: Cannot read property ’1’ of undefined
console.log()能訪問到數(shù)字,為什么比較時就會出錯?
<p id='abc'>aaaaaa</p><script> var data = [ ['北京', 10], ['上海', 20], ['福州', 30], ['廣州', 40], ['成都', 40], ['西安', 100] ]; var abc = document.getElementById(’abc’); j = 0; for (var i = 0; i < data.length; i++) {console.log(data[i][1]);if (data[i][1] > data[i+1][1]) { j++;}; } abc.innerHTML = j;</script>
問題解答
回答1:這個報錯是溢出數(shù)組,現(xiàn)在data.length=6,當(dāng)i=5是,i+1=6就溢出了。<p id='abc'>aaaaaa</p><script>
var data = [ ['北京', 10], ['上海', 20], ['福州', 30], ['廣州', 40], ['成都', 40], ['西安', 100]];var abc = document.getElementById(’abc’);j = 0;for (var i = 0; i < data.length; i++) { console.log(data[i][1]); if(i<data.length-1){if (data[i][1] > data[i+1][1]) { j++;}; }}abc.innerHTML = j;
</script>
這樣就不會報錯了。
回答2:你可以這樣寫:
var data = [ ['北京', 10], ['上海', 20], ['福州', 30], ['廣州', 40], ['成都', 40], ['西安', 100]];var abc = document.getElementById(’abc’);var j = 0;var max = data[0][1];for (let i = 1; i < data.length; i++) { let temp = data[i][1];if (temp > max) {j = i;max = temp; }}abc.innerHTML = data[j][0];回答3:
因為數(shù)組越界了,當(dāng)i = data.length - 1的時候, data[i+1][1]訪問的就是 data[6][1],data[6]其實是沒有的,因為他最大的才是data[5], 說的有點亂,不知道能看懂不
相關(guān)文章:
1. javascript - 關(guān)于apply()與call()的問題2. 安全性測試 - nodejs中如何防m(xù)ySQL注入3. java - spring boot 如何打包成asp.net core 那種獨立應(yīng)用?4. java - 在用戶不登錄的情況下,用戶如何添加保存到購物車?5. javascript - nginx反向代理靜態(tài)資源403錯誤?6. docker網(wǎng)絡(luò)端口映射,沒有方便點的操作方法么?7. docker - 各位電腦上有多少個容器啊?容器一多,自己都搞混了,咋辦呢?8. MySQL 查詢疑問?9. 推薦好用mysql管理工具?for mac和pc10. javascript - 如何將函數(shù)計算出的內(nèi)容傳遞為變量
