繁体   English   中英

在Javascript中从一串数组中查找单个或多个值

[英]Finding a single, or multiple values from a string of arrays in Javascript

我试图通过我的数组搜索我输入的任何数字,但它不能按预期工作。

在外部JavaScript:

window.onload = startup;

function startup() {
    runArraySequence () {
        writeArray.onclick = findArray;
    }
}
var array = [5,3,9,12,19,15,13,6,9,2,4,7,8,17];

function findArray () {
//The following script is a part of a 12 "else if" radio button form.
    if (arrayRad11.checked) {
        var searchNumber = document.getElementById("arrayValue").value;
        var arrayResult = -1;
        for (var i=0; i < array.length; i++) {
            if (array[i] === searchNumber) {
                i = arrayResult;
            }
            if (arrayResult < 0)  {
                msg6.innerHTML = "Found number " + searchNumber + ", " + arrayResult + " times.";
            }
        }
    }
}

HTML代码:

<div>
    <form>
        <input type="radio" id="arrayRad11" name="array" value="11">Find Number:</input>
        <input type="number" id="arrayValue" placeholder="Find Array Number"></input><br />
        <input type="button" id="writeArray" value="Skriv tall"></input>
        <input type="button" value="Reset" onClick="window.location.reload()"></input>
    </form>
    <p id="msg6"></p>
</div>

也上传到jsfiddle

代码中似乎存在一些逻辑问题,但相当容易修复:

 writeArray.onclick = findArray; var array = [5, 3, 9, 12, 19, 15, 13, 6, 9, 2, 4, 7, 8, 17, 9]; function findArray() { //The following script is a part of a 12 "else if" radio button form. if (arrayRad11.checked) { var searchNumber = document.getElementById("arrayValue").value; var arrayResult = 0; for (var i = 0; i < array.length; i++) { if (array[i] == searchNumber) { arrayResult++; } } if (arrayResult > 0) { msg6.innerHTML = "Found number " + searchNumber + ", " + arrayResult + " times."; } } } 
 <div> <form> <input type="radio" id="arrayRad11" name="array" value="11">Find Number:</input> <input type="number" id="arrayValue" placeholder="Find Array Number"></input> <br /> <input type="button" id="writeArray" value="Skriv tall"></input> <input type="button" value="Reset" onClick="window.location.reload()"></input> </form> <p id="msg6"></p> </div> 

  1. 我删除了你的runArraySequence()函数,因为你的JS中不存在这个函数。 它阻止了onclick的可访问性。

  2. 根据你的消息msg6,你似乎在寻找数组中数字的频率。 我将arrayResult值设置为从0开始,如果==语句为true,则增加count。 确保您知道==和===之间的类型关联差异。

  3. 我在for循环之外移动了你的第三个if语句,这样消息结果只会出现一次。

希望这可以帮助!

您可以使用Array.prototype.indexOf()方法在数组中查找值

[1,2,3].indexOf(2)
// will give you 1

要获得多个值,您需要在循环中使用indexOf

var find=2;
var i,arr=[1,2,3,2,7],entries=[];

while(-1<(i=arr.indexOf(find,i+1)))
  entries.push(i);

console.log('I found '+ents.length+' entries of '+find+' in array:',ents)
//I found 2 entries of 2 in array: Array [ 1, 3 ]

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM