2016-04-26 125 views
2

我有一個字符串數組字典:{"a":["b", "c"]}。索引字典時,我得到一個字符串數組,但檢查數組中是否有字符串總是返回false。 下面是代碼設置:檢查字符串是否在字典內的數組中

var dict = { 
    "first":["a", "b", "c"] 
} 
if("a" in dict["first"]){ 
    // Never hits this line 
    console.log("Found a!"); 
} 

我敢新的JavaScript,所以我可能會丟失一些有關Dictionary對象的設置,但似乎非常簡單,我有幾個同C語言的專業經驗所以這不起作用是相當令人不安的。這裏有什麼問題?

+0

的'in'操作者檢查屬性,如' 「第一」 或 「0」 中dict.first''。你想檢查數組[包含](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/includes)元素 – Bergi

+0

假設的「重複」問題不是一樣! – Dagrooms

+0

@ Dagrooms:[這些答案](http://stackoverflow.com/q/237104/1048572)中的任何一個都不能幫助您檢查字符串是否在數組中?數組是否是字典的一部分對您的問題絕對無關緊要。或者你真的在問爲什麼「進」運營商沒有做你認爲應該做的事情? – Bergi

回答

3

如果指定的屬性位於指定對象Taken from here中,則in運算符返回true。

a不是它是一個數組值的屬性,數組索引是充當財產和0 in dict["first"]true這裏。所以在這裏你可以使用indexOf()

var dict = { 
 
    "first": ["a", "b", "c"] 
 
} 
 
if (dict["first"].indexOf("a") > -1) { 
 
    console.log("Found a!"); 
 
}

+1

什麼是救生員。它被標記爲重複,但重複的問題不是幾乎相同的答案,我不想在此應用程序中使用jquery。 – Dagrooms

-1

您還可以使用

var dict = { 
    "first":["c", "b", "a"] 
} 

for(x in dict["first"]){ 
    if(dict["first"][x]==='a') 
    { 
    console.log("index of a :"+x); 
    break; 
    } 

} 
0

嘗試。這會對你有用。在dict`

var dict = { 
    "first":["c", "b", "a"] 
}; 
console.log(dict.first); 
for(var x in dict.first){ 

    if(dict.first[x]=="a") 
    { 
    console.log("index of a :"+ x); 
    break; 
    } 
} 
} 
相關問題