**已关闭。**此问题不可复制或由打字错误引起。它目前不接受答案。
**想要改进此问题?**更新问题,使其位于堆栈溢出主题上。
两天前关门了。
改进这个问题
我使用冒泡排序从最小到最大对数组进行排序。我的简单目标是找出两个最大值之间的差异。然而,我用 var diff = sorted[sorted.length] - sorted[sorted.length - 1];
(其中排序是气泡排序的结果)
我尝试过使用一元运算符number.parseint(),但没有成功(我也已经看到了这一点:为什么两个数字相减会产生一个nan,而这一点:javascript减法返回nan,但两者都不适用于我的具体情况)
非常感谢您的帮助。
我的代码如下:
function bubble(arr) {
for(var p=0;p<arr.length;p++) {
for(var i=0;i<arr.length;i++) {
var temp;
if (arr[i]>arr[i+1]) {
temp = arr[i];
arr[i] = arr[i+1];
arr[i+1] = temp;
}
}
}
return arr;
}
// will be [5, 8, 9]
var sorted = bubble([8, 5, 9]);
// should be 1
var diff = (+sorted[sorted.length] - +sorted[sorted.length - 1]);
// is NaN
console.log(diff);
2条答案
按热度按时间hrysbysz1#
数组的长度比数组的最后一个有效索引高1,因为索引从0开始。
a[a.length]
这是不允许的。1zmg4dgp2#
这句话
导致
undefined
. 永远不能访问索引等于其长度的数组中的元素。数组中最后一个元素的索引等于length - 1
.在javascript中
undefined - number
给予NaN