使用 JQuery.inArray() 查找字符串
Find string using JQuery.inArray()
目标: 1) 使用多个元素的 ID 属性创建一个字符串。
2)将该字符串推送到一个数组。
3) 检查数组中的字符串是否构成一个特定的词——在本例中,"idaho".
问题: 我似乎只能验证特定的 字符 是否在数组中。如果我在 "$.inArray" 的 "value" 中使用了多个字符,它 returns false.
问题:如何验证数组中的字符串是否构成单词"idaho"而不是仅仅验证字符串包含"i"或"d" 或 "a",等等?
这个 FIDDLE 有效,但只是因为它正在寻找 "i" 而不是 "idaho"。
我对此做了很多研究,但无法让它发挥作用。感谢您帮助菜鸟!
<div class="pieces" id="i"></div>
<div class="pieces" id="d"></div>
<div class="pieces" id="a"></div>
<div class="pieces" id="h"></div>
<div class="pieces" id="o"></div>
var piecesArray = [];
var ids = $('.pieces').map(function() {
piecesArray.push(this.id);
});
piecesArray = piecesArray.join('');
if ($.inArray('i', piecesArray) !==-1){
alert(piecesArray);
}
您要查看给定字符串中是否存在子字符串,而不是数组(字符串)中是否存在元素(字符)。 inArray() 函数在字符串中搜索单个字符。将字符串传递给函数会强制函数假定目标数组是字符串数组,而事实并非如此 -> returns false。
相反,您应该使用 string.indexOf() 函数来检查字符串是否包含给定的子字符串。
if(piecesArray.indexOf('idaho') >= 0) {
// idaho is in the string!
}
如果子字符串在目标字符串中,则函数 returns 是子字符串的停留索引。在这种情况下,由于子字符串是 return 0.
的字符串
希望对您有所帮助!
为什么不直接将连接的数组与字符串进行比较?
var piecesArray = [],
word;
$(".pieces").each(function() {
piecesArray.push(this.id);
});
word = piecesArray.join("");
if (word === "idaho"){
alert(word);
}
可以一次性直接获取当前单词:
var pieces = $('.pieces').map(function() {
return this.id;
}).get().join('');
然后检查它是否与所需的词相匹配:
if (pieces === 'idaho')
为什么必须使用 $.inArray
,您将这些片段连接成一个字符串,要让 alert
工作,您只需替换 :
if ($.inArray('i', piecesArray) !==-1)
与:
if (piecesArray == "idaho")
你为什么不简单地从头开始创建一个字符串:
var piecesString = "";
var ids = $('.pieces').map(function() {
piecesString += this.id;
});
if (piecesString == "idaho"){
alert(piecesString);
}
这里是 fiddle...http://jsfiddle.net/q3x1gg9b/4/
目标: 1) 使用多个元素的 ID 属性创建一个字符串。 2)将该字符串推送到一个数组。 3) 检查数组中的字符串是否构成一个特定的词——在本例中,"idaho".
问题: 我似乎只能验证特定的 字符 是否在数组中。如果我在 "$.inArray" 的 "value" 中使用了多个字符,它 returns false.
问题:如何验证数组中的字符串是否构成单词"idaho"而不是仅仅验证字符串包含"i"或"d" 或 "a",等等?
这个 FIDDLE 有效,但只是因为它正在寻找 "i" 而不是 "idaho"。
我对此做了很多研究,但无法让它发挥作用。感谢您帮助菜鸟!
<div class="pieces" id="i"></div>
<div class="pieces" id="d"></div>
<div class="pieces" id="a"></div>
<div class="pieces" id="h"></div>
<div class="pieces" id="o"></div>
var piecesArray = [];
var ids = $('.pieces').map(function() {
piecesArray.push(this.id);
});
piecesArray = piecesArray.join('');
if ($.inArray('i', piecesArray) !==-1){
alert(piecesArray);
}
您要查看给定字符串中是否存在子字符串,而不是数组(字符串)中是否存在元素(字符)。 inArray() 函数在字符串中搜索单个字符。将字符串传递给函数会强制函数假定目标数组是字符串数组,而事实并非如此 -> returns false。
相反,您应该使用 string.indexOf() 函数来检查字符串是否包含给定的子字符串。
if(piecesArray.indexOf('idaho') >= 0) {
// idaho is in the string!
}
如果子字符串在目标字符串中,则函数 returns 是子字符串的停留索引。在这种情况下,由于子字符串是 return 0.
的字符串希望对您有所帮助!
为什么不直接将连接的数组与字符串进行比较?
var piecesArray = [],
word;
$(".pieces").each(function() {
piecesArray.push(this.id);
});
word = piecesArray.join("");
if (word === "idaho"){
alert(word);
}
可以一次性直接获取当前单词:
var pieces = $('.pieces').map(function() {
return this.id;
}).get().join('');
然后检查它是否与所需的词相匹配:
if (pieces === 'idaho')
为什么必须使用 $.inArray
,您将这些片段连接成一个字符串,要让 alert
工作,您只需替换 :
if ($.inArray('i', piecesArray) !==-1)
与:
if (piecesArray == "idaho")
你为什么不简单地从头开始创建一个字符串:
var piecesString = "";
var ids = $('.pieces').map(function() {
piecesString += this.id;
});
if (piecesString == "idaho"){
alert(piecesString);
}
这里是 fiddle...http://jsfiddle.net/q3x1gg9b/4/