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

时间:2015-09-22 16:48:16

标签: javascript arrays search

我试图在我的数组中搜索我输入的数字,但它并没有按预期工作。

在外部javascript:

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

HTML code:

dataframe.to_html()

还上传到jsfiddle

2 个答案:

答案 0 :(得分:2)

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

&#13;
&#13;
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.";
    }
  }
}
&#13;
<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>
&#13;
&#13;
&#13;

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

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

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

  4. 希望这有帮助!

答案 1 :(得分:1)

您可以使用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 ]