使用JQuery.inArray()查找字符串

时间:2015-01-03 21:39:27

标签: javascript jquery arrays

目标: 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);
  }

5 个答案:

答案 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")

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

答案 4 :(得分:0)

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

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

这是一个小提琴... http://jsfiddle.net/q3x1gg9b/4/