我不知道为什么这不起作用,应该返回一个具有四个不同值的数组,但是它没有

$(document).ready(function (e) {
    var randomNumbers = new Array();
    for (var i = 0; i < 4; i++) {
        randomNumbers[i] = Math.floor((Math.random() * 9) + 1);
        while ($.inArray(randomNumbers[i], randomNumbers) !== -1) {
            randomNumbers[i] = Math.floor((Math.random() * 9) + 1);
        }
    }
    for (var i = 0; i < randomNumbers.length; i++) {
        if ($('#output').html() !== '') {
            var existingOutput = $('#output').html();
            $('#output').html(existingOutput + randomNumbers[i]);
        } else {
            $('#output').html(randomNumbers[i]);
        }
    }
});

最佳答案

如果生成一个数字并将其放入数组中,您是否认为$.inArray()会告诉您呢?

您的while循环肯定会挂起。当然,数组的成员(randomNumbers[i])始终位于数组中。实际上,当调用$.inArray()以查看randomNumbers[i]是否在数组中时,它会返回i(如果没有其他地方,在这种情况下就不可能)。您的循环不会超过第一个数字,因此它将为0

08-08 03:50