在JavaScript中检查数组或Json值

时间:2013-05-12 21:07:06

标签: javascript

我试图检查,如果存在某些单词,但据我所知,它似乎不起作用。

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

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

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

4 个答案:

答案 0 :(得分:3)

试试这个: -

object.hasOwnProperty

if(Chars.hasOwnProperty('ae'))
{
//Do something
}

答案 1 :(得分:0)

你可以做到

if(Chars.ae){...}
else {...}

答案 2 :(得分: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

答案 3 :(得分: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对象,我介绍过你会得到一个是,两个是,另一个是。