2016-04-26 92 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; 
    } 
} 
} 
相关问题