2013-05-12 2 views
0

Я пытаюсь проверить, существуют ли определенные слова, но насколько я пробовал, он, похоже, не работает.Проверка значений массива или Json в JavaScript

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

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

Я просто пытаюсь знать, если ae существует

+0

Обратите внимание, что ваш код не использует JSON - у вас есть объект, созданный из литерала объекта. (JSON - это строковый формат, используемый для обмена данными.) – nnnnnn

ответ

0

Вы можете просто сделать

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

Но у меня есть более 100 значений 'ae', которые нужно проверить, так или иначе, это можно сделать с помощью циклов вместо 100' if/elseif' или 'switch() '? thanks btw – 2013-05-12 21:10:02

+0

@Kuntilak Объект не может иметь несколько свойств с одним и тем же именем. Последний будет перезаписывать все остальные. – Joseph

+0

Я пробовал ваш код сейчас, он не работает, можете ли вы дважды проверить? – 2013-05-12 21:13:49

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 
+0

Обратите внимание, что 'if (Chars.ae) {' работает только если вы заранее знаете, что связанное значение не может быть пустой строкой (или другим значением фальшивки). – nnnnnn

+0

Я хотел проверить неопределенное, что я сделал во второй части. Обновлен первый. Спасибо за подсказку! – Brandon

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 объекта, который вы показали с тестовым массивом я представил вы получите да, два ню, а другой да.

Смежные вопросы