[英]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>
我删除了你的runArraySequence()函数,因为你的JS中不存在这个函数。 它阻止了onclick的可访问性。
根据你的消息msg6,你似乎在寻找数组中数字的频率。 我将arrayResult值设置为从0开始,如果==语句为true,则增加count。 确保您知道==和===之间的类型关联差异。
我在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.