0

我正在尝试检查是否存在某些单词,但据我尝试,它似乎不起作用。

 Chars = {
    ae: 'hello',
    oe: 'world',
};

if(ae in Chars){
    document.write('yes');
}else{
    document.write('no');
}   

我只是想知道,如果ae存在

4

4 回答 4

3

尝试这个:-

object.hasOwnProperty

if(Chars.hasOwnProperty('ae'))
{
//Do something
}
于 2013-05-12T21:10:48.550 回答
0

如果它是您在编码时知道的单个值,您可以这样做

if (Chars.ae !== undefined) {
    document.write('yes');
}
else {
    document.write('no');
}

如果您希望能够在运行时动态地计算出这些,比如假设您有一个表示要检查的属性的变量,那么您可以使用括号表示法。

Chars = {
    ae: 'hello',
    oe: 'world',
    .. bunch of other properties
};

function doesCharEntryExist(entry) {
    return Chars[entry] !== undefined;
}

console.log(doesCharEntryExist('ae'));
console.log(doesCharEntryExist('oe'));
console.log(doesCharEntryExist('blah'));

输出

true
true
false
于 2013-05-12T21:23:08.680 回答
0

要使用in运算符,您需要加上ae引号:

if ("ae" in Chars){

或者您可以使用如下变量:

var valueToTest = "ae";
if (valueToTest in Chars) {

您在另一个答案下的评论中说,您有超过一百个值要检查。你没有说你是如何管理这一百个的,但假设它们在一个数组中,你可以使用一个循环:

var keyNamesToTest = ["ae", "xy", "zz", "oe"];
for (var i = 0; i < keyNamesToTest.length; i++) {
    if (keyNamesToTest[i] in Chars){
        document.write('yes');
        // key name exists - to get the value use Chars[keyNamesToTest[i]]
    }else{
        document.write('no');
    }
}

对于Chars你用我介绍的测试数组展示的对象,你会得到一个是,两个不是,另一个是。

于 2013-05-12T21:23:27.860 回答
0

你可以做

if(Chars.ae){...}
else {...}
于 2013-05-12T21:08:19.147 回答