簡體   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