从数组中减去两个数字将返回nan

nbnkbykc  于 2021-09-23  发布在  Java
关注(0)|答案(2)|浏览(424)

**已关闭。**此问题不可复制或由打字错误引起。它目前不接受答案。
**想要改进此问题?**更新问题,使其位于堆栈溢出主题上。

两天前关门了。
改进这个问题
我使用冒泡排序从最小到最大对数组进行排序。我的简单目标是找出两个最大值之间的差异。然而,我用 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);
hrysbysz

hrysbysz1#

数组的长度比数组的最后一个有效索引高1,因为索引从0开始。 a[a.length] 这是不允许的。

1zmg4dgp

1zmg4dgp2#

这句话

sorted[sorted.length]

导致 undefined . 永远不能访问索引等于其长度的数组中的元素。数组中最后一个元素的索引等于 length - 1 .
在javascript中 undefined - number 给予 NaN

相关问题