搜索多个阵列
问题描述:
嘿,我正在为每个阵列分别搜索来自用户的特定输入。搜索多个阵列
if ($.inArray(i.val(), helloInputArray) > -1) { //IF HELLO
if (hello == 0) { //HAVE YOU ALREADY SAID HI?
r = Math.floor(Math.random()*4);
o.html(o.html()+helloOutputArray[r]);
hello = 1;
i.val('');
} else { //IF YOU'VE ALREADY SAID HI...
o.html(o.html()+'I already said hi to you!<br />');
i.val('');
}
} else if ($.inArray(i.val(), byeInputArray) > -1) { //IF GOODBYE
if (bye == 0) {
r = Math.floor(Math.random()*4);
o.html(o.html()+byeOutputArray[r]);
i.val('');
} else {
o.html(o.html()+'I already said goodbye... Go away!');
i.val('');
}
}
有什么办法可以一次搜索所有数组,因为我需要搜索每个数组的字符串。
啊哈
所以 - 如果我输入“AE”,那么我想它要经过每一个项目每一个数组中,并在其“AE”返回所有的字符串。
^_^<(坏字眼...)
答
如果我正确认识你,你要巩固您单独的阵列到一个做一个循环的目的,但你不想修改原始数组。
如果是的话,试试这个:
if($.inArray(i.val(), helloInputArray.concat(byeOutputArray)) > -1) {
...
The .concat()
method将创建两个数组的副本结合在一起为一体,所以原稿不被修改。该副本作为第二个参数传递给$.inArray()
方法。
编辑:
从下面的评论,这听起来像你想测试,如果i.val()
是阵列中的任何项目的子字符串。
如果是这样,您可能不会使用$.inArray
,而是使用$.each()
来迭代Array并测试该值。
var isInArray = false;
var value = i.val();
$.each(helloInputArray.concat(byeOutputArray), function(i,val) {
if(val.indexOf(value) > -1) {
isInArray = true;
return false;
}
});
if (isInArray) > -1) {
if (hello == 0) {
r = Math.floor(Math.random()*4);
o.html(o.html()+helloOutputArray[r]);
...
非常好,这看起来不错!我想知道如何去搜索数组中的每个字符串? – 2010-09-15 14:59:28
@Neurofluxation - 所以你想搜索'i.val()'是否在任何数组项的任何部分?这听起来是对的吗?我会在一分钟后更新。 – user113716 2010-09-15 15:25:55
完美解释:) – 2010-09-15 15:32:34