使用 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")

http://jsfiddle.net/q3x1gg9b/2/

你为什么不简单地从头开始创建一个字符串:

 var piecesString = "";
      var ids = $('.pieces').map(function() {
            piecesString += this.id;
       });
    if (piecesString == "idaho"){
      alert(piecesString);
    }

这里是 fiddle...http://jsfiddle.net/q3x1gg9b/4/