为什么这不起作用?
var animals = ['Cat', 'Dog'].valueOf;
if ("animals:contains(Cat)") {
// ...
}
答案 0 :(得分:0)
if(animals.indexOf('Cat') != -1){
// ...
}
任何非空(""
)的字符串都为truthy,因此如果您执行if
,if("some string")
的正文将始终运行。
答案 1 :(得分:0)
您无法在Javascript中使用数组上的CSS选择器。您可以使用indexOf
查看数组中是否存在特定字符串。
if (animals.indexOf('Cat') > -1) {
console.log('We have kitties.')
}
您在Javascript中真正使用CSS选择器的唯一时间就是您要查询DOM。
答案 2 :(得分:0)
您似乎想要JSONSelect:
JSONSelect定义了一种语法和结构非常相似的语言 CSS3选择器。 JSONSelect表达式是可以的模式 与JSON文档匹配。
请注意,:contains
不是标准的CSS psedo-class,但JSONSelect将其作为扩展名提供。
var animals = ['Cat', 'Dog'];
if (JSONSelect.match(':contains("Cat")', animals).length) // truthy
document.write('There is a cat');
if (JSONSelect.match(':contains("Elephant")', animals).length) // falsy
document.write('There is an elephant');
<script src="http://jsonselect.org/js/jsonselect.js"></script>
但当然,这太过分了。更好地使用How do I check if an array includes an object in JavaScript?中解释的方法。