在JavaScript中检查数组或Json值
我试图检查是否存在某些单词,但就我所做的努力而言,它似乎不起作用在JavaScript中检查数组或Json值,javascript,Javascript,我试图检查是否存在某些单词,但就我所做的努力而言,它似乎不起作用 Chars = { ae: 'hello', oe: 'world', }; if(ae in Chars){ document.write('yes'); }else{ document.write('no'); } 我只是想知道,如果ae存在你可以这样做 if(Chars.ae){...} else {...} 你可以这么做 if(Chars.ae){...} else {...
Chars = {
ae: 'hello',
oe: 'world',
};
if(ae in Chars){
document.write('yes');
}else{
document.write('no');
}
我只是想知道,如果ae
存在你可以这样做
if(Chars.ae){...}
else {...}
你可以这么做
if(Chars.ae){...}
else {...}
试试这个:-
试试这个:-
如果它是编码时您知道的单个值,那么您可以这样做
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
如果它是编码时您知道的单个值,那么您可以这样做
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
要在操作符中使用
,您需要将ae
置于引号中:
if ("ae" in Chars){
或者,您可以使用以下变量:
var valueToTest = "ae";
if (valueToTest in Chars) {
你在另一个答案下的评论中说,你有100多个值要检查。您没有说明如何管理这一百个,但假设它们在一个数组中,您可以使用一个循环:
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');
}
}
var-keyNamesToTest=[“ae”、“xy”、“zz”、“oe”];
对于(变量i=0;i
对于使用我介绍的测试数组显示的Chars
对象,您将得到一个yes、两个no和另一个yes。要在操作符中使用,您需要将ae
放在引号中:
if ("ae" in Chars){
或者,您可以使用以下变量:
var valueToTest = "ae";
if (valueToTest in Chars) {
你在另一个答案下的评论中说,你有100多个值要检查。您没有说明如何管理这一百个,但假设它们在一个数组中,您可以使用一个循环:
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');
}
}
var-keyNamesToTest=[“ae”、“xy”、“zz”、“oe”];
对于(变量i=0;i
对于使用我介绍的测试数组显示的Chars
对象,您会得到一个是、两个否和另一个是。但是,我有100多个ae
类值要检查,这是否可以通过循环来完成,而不是100个if/elseif
或switch()
?谢谢btw@Kuntilak一个对象不能有多个同名属性。最后一个将覆盖所有其他。我现在尝试了你的代码,它不起作用,你能再检查一下吗?@Kuntilak我不知道你是如何使用它的,请注意,只有当你事先知道与ae
关联的值不能是空字符串(或其他虚假值)时,这才起作用。但是,我要检查的ae
类值超过100个,这是否可以通过循环而不是100if/elseif
或switch()
?谢谢btw@Kuntilak一个对象不能有多个同名属性。最后一个将覆盖所有其他。我现在尝试了你的代码,它不起作用,你能再检查一下吗?@Kuntilak我不知道你是如何使用它的,请注意,只有当你事先知道与ae
关联的值不能是空字符串(或其他伪值)时,这才有效。请注意if(Chars.ae){
只有在您事先知道关联的值不能是空字符串(或其他伪值)时才起作用。我的意思是检查未定义的值,这是我在第二部分中做的。更新了第一部分。感谢您的提示!注意if(Chars.ae){
只有在您事先知道关联的值不能是空字符串(或其他伪值)时才起作用。我的意思是检查未定义的值,这是我在第二部分中做的。更新了第一部分。感谢您的提示!请注意,您的代码不使用JSON-您拥有的是从对象文本创建的对象。(JSON是一种用于数据交换的字符串格式。)请注意,您的代码不使用JSON—您拥有的是一个从对象文本创建的对象。(JSON是用于数据交换的字符串格式。)