大众信息网

哥们 能麻烦看一下 这个吗 出现错误 Uncaught TypeError: Cannot read property 'time' of undefined

答案:3  mip版
解决时间 2021-01-09 05:28
  • 提问者网友:当我没来过
  • 2021-01-08 04:38
数组中是有这个值的 如果改成if (array[0].time > array[1].time)就好了

求帮忙啊
function paip(array){
var temp = '';
for (var i = 0; i < array.length; i++)
{
for (var j = 0; j < array.length - i; j++)
{
if (array[j].time > array[j + 1].time)
{
temp = array[j + 1].time;
array[j + 1].time = array[j].time;
array[j].time = temp;
}
}
}
return array[0].time;
}
最佳答案
  • 二级知识专家网友:敌不过时间逃不过距离
  • 2021-01-08 06:08
是个排序吧~
这一句:
for (var j = 0; j < array.length - i; j++)

改成:
for (var j = 0; j < array.length - i-1; j++)
因为当i=0时,j值可以到array.length-1的,下面的array[j+1]是就溢出了,元素都没有,其属性肯定也没有啦。

测试代码:
var ss = function (i){
this.time=i;this.name="s"+i;};var aa=new Array();for(var i=0;i<10;i++){aa.push(new ss(i));}function paip(array){var temp = '';for (var i = 0; i < array.length; i++){for (var j = 0; j < array.length - i-1; j++){if (array[i].time < array[j + 1].time){temp = array[j + 1].time;array[j + 1].time = array[i].time;array[i].time = temp;
}}}
return array;} paip(aa);
运行后可以发现,aa数组元素的time由原来的从小到大排序变成了从大到小排序。
全部回答
  • 1楼网友:柒夏锦年
  • 2021-01-08 08:54
我暂时保留我的看法!
  • 2楼网友:对你在意
  • 2021-01-08 07:30
应该是逻辑问题吧。 当i=0,j=array.length-1的时候,你的代码还在试图获取array[j+1],但是array[j+1]明显是undefined,所以就会有如上错误 应该是for(var j = 0; j < array.length - i - 1; j++)才对
我要举报
如以上问答内容为低俗/色情/暴力/不良/侵权的信息,可以点下面链接进行举报,我们会做出相应处理,感谢你的支持!
点此我要举报以上问答信息
推荐资讯