javascript - js 二维数组比较大小问题。
问题描述
报错:Uncaught TypeError: Cannot read property ’1’ of undefined
console.log()能访问到数字,为什么比较时就会出错?
<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:这个报错是溢出数组,现在data.length=6,当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:
因为数组越界了,当i = data.length - 1的时候, data[i+1][1]访问的就是 data[6][1],data[6]其实是没有的,因为他最大的才是data[5], 说的有点乱,不知道能看懂不
相关文章:
1. javascript - JS设置Video视频对象的currentTime时出现了问题,IE,Edge,火狐,都可以设置,反而chrom却...2. python - django models 为生成的html元素添加样式。3. android - 安卓做前端,PHP做后台服务器 有什么需要注意的?4. docker-compose 为何找不到配置文件?5. python的bs4如何筛选出h1标签中的内容6. 前端 - css3 3d效果问题7. java - spring-data Jpa 不需要执行save 语句,Set字段就可以自动执行保存的方法?求解8. docker gitlab 如何git clone?9. javascript - Js 函数声明和函数表达式10. html5 - 为什么使使用vue cli 脚手架,post-css 没有自动对css3属性自动添加浏览器前缀呢?
