Javascript - 将数组中的重复项写入 html

Javascript - write duplicates in array to html

我需要编写一个函数来创建 1 到 20 之间的随机数数组,并在 table 中打印每个数字。如果它与已经生成的数字重复,则需要以红色突出显示。

我的问题是,第一个副本打印成红色后,如果有另一个,它就不会打印成红色。我无法让它工作不止一次。

这是输出:

这是我的代码:

function randomNumberTable(){
    // create array with random numbers
    var nums = new Array();
    for(var i = 0; i < 10; i++){
        nums[i] = randomNumber();
    }

    // create header row
    document.writeln("<table border = \"1\">");
    document.writeln("<th>Index</th>");
    document.writeln("<th>Number</th>");

    // if duplicate, print in red, else, black
    for(var j = 0; j <= nums.length-1; j++){
        var isExist = numberExists(nums[j], nums, j);   
        if (isExist){
            document.writeln("<tr>");
            document.writeln("<td>" + j + "</td>");
            document.writeln("<td><font color=\"red\">" + nums[j] + "</font></td>");
            document.writeln("</tr>");
        }
        else{
            document.writeln("<tr>");
            document.writeln("<td>" + j + "</td>");
            document.writeln("<td>" + nums[j] + "</td>");
            document.writeln("</tr>");
        }
    }
}

// generate a random number between 1 and 20
function randomNumber(){
    var randomNum = Math.floor(Math.random()*20) + 1;
    return randomNum;
}

// checking if the number exists 
function numberExists(num, myArray, myIndex){
    for(var k = 0; k < myIndex; k++){
        if(num == myArray[k])
            return true;
        else
            return false;
    }
}

像这样更改您的 numberExists 函数。

function numberExists(num, myArray, myIndex){
    for(var k = 0; k < myIndex; k++){
        if(num == myArray[k])
            return true;
    }
    return false;
}