目标: 1)使用多个元素的ID属性创建字符串。 2)将该字符串推送到数组。 3)检查数组中的字符串是否形成特定单词 - 在本例中为“idaho”。
问题:我似乎只能验证特定的字符是否在数组中。如果我在“$ .inArray”的“值”中使用多个字符,则返回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);
}
答案 0 :(得分:2)
您可以一次性直接获取当前单词:
var pieces = $('.pieces').map(function() {
return this.id;
}).get().join('');
然后检查它是否与所需的单词匹配:
if (pieces === 'idaho')
答案 1 :(得分:0)
您正在查看给定字符串中是否存在子字符串,而不是数组(字符串)中是否存在元素(字符)。 inArray()函数在字符串中搜索单个字符。将字符串传递给函数会强制函数假定目标数组是一个字符串数组,它不是 - &gt;返回false。
相反,您应该使用string.indexOf()函数来检查字符串是否包含给定的子字符串。
if(piecesArray.indexOf('idaho') >= 0) {
// idaho is in the string!
}
如果子字符串在目标字符串中,则该函数返回子字符串的停留索引。在这种情况下,由于子字符串是字符串,它将返回0。
希望这有帮助!
答案 2 :(得分:0)
为什么不将你的连接数组与字符串进行比较?
var piecesArray = [],
word;
$(".pieces").each(function() {
piecesArray.push(this.id);
});
word = piecesArray.join("");
if (word === "idaho"){
alert(word);
}
答案 3 :(得分:0)
为什么必须使用$.inArray
,您将这些部分加入到字符串中,alert
工作所需要的只是替换:
if ($.inArray('i', piecesArray) !==-1)
使用:
if (piecesArray == "idaho")
答案 4 :(得分:0)
为什么不从头开始简单地创建一个字符串:
var piecesString = "";
var ids = $('.pieces').map(function() {
piecesString += this.id;
});
if (piecesString == "idaho"){
alert(piecesString);
}
这是一个小提琴... http://jsfiddle.net/q3x1gg9b/4/