用于确定数组元素是不是已存在的Javascript函数[重复]

Posted

技术标签:

【中文标题】用于确定数组元素是不是已存在的Javascript函数[重复]【英文标题】:Javascript function to determine if array element already exists [duplicate]用于确定数组元素是否已存在的Javascript函数[重复] 【发布时间】:2015-08-03 10:18:49 【问题描述】:

所以我正在编写一些代码,它将生成 1 到 20 之间的随机数十次,将其添加到数组中,然后将其显示在表格中。如果一个数字出现不止一次,它将在表格中显示为红色。我无法创建将评估随机数以确定它是否是随机的并将其变为红色的函数。非常感谢任何帮助

var i;
        var myarray = new Array();



        document.writeln("<table>");
        document.writeln("<th> Index </th>");
        document.writeln("<th> Number </th>");

        for (i = 1; i <= 10; i++)

            //numberExists(); 

            var min = 1;
            var max = 20;
            var randomnum = Math.floor(Math.random() * (max - min + 1)) + min;
            var mynum = parseInt (randomnum );

            myarray[i] = mynum;


        document.writeln("<tr>");
        document.writeln("<td>" + i + "</td>");
        document.writeln("<td>" + myarray[i] + "</td>");
        document.writeln("</tr>");
        

        document.writeln("</table>");

        //function numberExists(mynum, myarray)
            // Can't figure out the code that goes here
        //

【问题讨论】:

你在找indexOf() 【参考方案1】:

您可以通过以下方法测试mynum 是否已经在myarray 中并相应地更改颜色:

var i;
        var myarray = new Array();



        document.writeln("<table>");
        document.writeln("<th> Index </th>");
        document.writeln("<th> Number </th>");

        for (i = 1; i <= 10; i++)



            var min = 1;
            var max = 20;
            var randomnum = Math.floor(Math.random() * (max - min + 1)) + min;
            var mynum = parseInt (randomnum );
            var color="black";
            if(myarray.indexOf(mynum) > -1)
            color="red";
                   
            myarray[i] = mynum;


        document.writeln("<tr>");
        document.writeln("<td>" + i + "</td>");
        document.writeln("<td><font color="+color+">" + myarray[i] + "</td>");
        document.writeln("</tr>");
        

        document.writeln("</table>");

【讨论】:

哇,我很惊讶我错过了这么简单的东西。感谢您的快速回复!【参考方案2】:

编辑:如果您正在寻找实用的解决方案,请按照 cmets 中的建议使用 indexOf。如果您正在寻找正确的算法方式(不需要线性查找时间并产生渐近更快的算法,请遵循以下我的原始建议:

将数字作为键存储在对象中。

var myNumbers = ;

...

myNumbers[mynum] = true; // add it to the object

if (myNumbers[mynum]) 
  console.log("The number has already been added");
 else 
  console.log("This is a new number");

【讨论】:

差不多了,不过只检查key是否存在,遇到0就不行了

以上是关于用于确定数组元素是不是已存在的Javascript函数[重复]的主要内容,如果未能解决你的问题,请参考以下文章

递归确定是不是存在与给定 int 参数匹配的正 int 数组的子集和?

在 JavaScript/CoffeeScript 中确定一个数组是不是包含另一个数组的内容

确定是不是存在生物识别硬件以及用户是不是已在 Android P 上注册生物识别

JavaScript tips:数组去重

JavaScript--部分

Head First JavaScript学习笔记