这是我想要完成的一个例子,正如预期的那样,它无法正常工作。
是否有相似之处可行?
var fieldsToCheck = ["a", "b", "c", "d", "e", "f"];
for (var i = 0; i < fieldsToCheck.length; i++){
var field = fieldsToCheck[counter];
if (!obj.field) {
console.log('There is no field of: ' + field);
}
}
我最初只对每个字段使用if语句,我想知道是否有更快的方法来执行此操作。
答案 0 :(得分:2)
您无法以这种方式访问属性。由于它是变量,因此必须使用括号而不是点符号:
var fieldsToCheck = ["a", "b", "c", "d", "e", "f"];
for (var i = 0; i < fieldsToCheck.length; i++){
var field = fieldsToCheck[counter];
if (!obj[field]) {
console.log('There is no field of: ' + field);
}
}
使用点符号时,例如obj.field
,您实际上是在询问obj
是否有密钥field
,而不是obj
的密钥是变量field
的值。对于您正在访问包含-
等非变量有效字符的未知字符串或字符串键的任何内容,您必须使用括号表示法obj[field]
或obj["a"]
。