ARRAY javascript indexOf
ARRAY javascript indexOf
我有一个多维数组。我需要某种循环来随机选择数组中的一个字符串,并检查该字符串是否包含字符。如果没有,那么重复,直到找到为止。
我写了一个for循环来检查数组中的字符串,但它从0开始,一直遍历数组直到找到它。我需要它在数组中随机选择一个字符串。。。有什么帮助吗?
jsFiddle-->http://jsfiddle.net/hz2MZ/1/
jQuery
$(document).ready(function() {
var myarr = [{"Name":"Bob", "Char":"134"},
{"Name":"Phil", "Char":"134"},
{"Name":"Jane", "Char":"1"},
{"Name":"Don", "Char":"4"},
{"Name":"Dan", "Char":"2"},
{"Name":"Jan", "Char":"12"},
{"Name":"Bill", "Char":"24"},
{"Name":"Sam", "Char":"14"},
{"Name":"Jake", "Char":"23"},
{"Name":"Ben", "Char":"3"}];
$('button').click(function() {
for(var i = 0; i < myarr.length; i++) {
if(myarr[i].Char.indexOf('2') !== -1) {
alert("Name: " + myarr[i].Name + "'nChar: " + myarr[i].Char);
return;
} else {}
}
});
});
我的解决方案
$('button').click(function () {
var found = false;
while (!found) {
var randomIndex = Math.floor(Math.random() * myarr.length);
if (myarr[randomIndex].Char.indexOf('2') !== -1) {
alert("Name: " + myarr[randomIndex].Name + "'nChar: " + myarr[randomIndex].Char);
found = true;
} else {}
}
});
编辑
更新了无休止循环问题
$('button').click(function () {
var found = false;
var maxRandom = 20;
var currentRandom = 0;
while (!found && currentRandom < maxRandom) {
var randomIndex = Math.floor((Math.random() * myarr.length));
currentRandom++;
if (myarr[randomIndex].Char.indexOf('2') !== -1) {
alert("Name: " + myarr[randomIndex].Name + "'nChar: " + myarr[randomIndex].Char);
found = true;
} else {}
}
}
一种方法是复制数组,然后从副本中随机拼接一个成员,并检查所需值:
function randomValueByChar(arr, c) {
var a = arr.slice && arr.slice();
var i = a.length || 0;
var t;
while (i--) {
t = a.splice(Math.random() * i | 0, 1);
if (t[0].Char.indexOf(c) != -1) return t;
}
}
另一种方法是创建一个索引数组(例如[0,1,2,3…]
),然后一次随机拼接一个值,并将其用作从数组中检索值的索引。这两种方法都不会有无限循环,并且最多会访问每个成员一次。
相关文章:
- 需要一些str.indexOf帮助javascript
- JavaScript indexOf 与数百万个匹配项
- Javascript - 如何使用 .indexOf 而不是开头查找特定字符串
- JavaScript 中的 indexOf 方法
- 使用Javascript在mongo中数组indexOf
- Javascript性能:如何在数组中循环并检查每个值比indexOf、search和match更快
- Javascript:很难分析在for循环中包含indexOf的代码
- javascript indexOf 无法检查数组中的相同数字
- JavaScript-使用indexOf()在字符串中搜索字符
- JavaScript:Association/Object数组中的indexOf
- Google Sheets/Javascript:无法使用indexOf()在数组中搜索特定字符串
- Javascript无法调用方法'indexOf'的未定义
- 在使用JavaScript的IE7/8中,数组上的.indexOf函数不起作用
- Javascript:为什么要使用indexOf()来匹配字符串中的值
- javascript数组indexOf中使用的regex
- indexOf 在 JavaScript 中不起作用
- indexOf( object) in javascript
- javascript Uncatch TypeError: .indexOf 不是一个函数
- 检查字符串是否包含子字符串而不使用indexOf - Javascript
- 不能在JSON字符串上使用.indexof,因为它没有'indexof'javascript