[英]Having the names of the fields, how can I initialize, with blank data, the undefined fields of an object?
在Javascript中,我有一个字符串数组,这些字符串代表对象字段的所有可能名称。
var fields = ["name", "age", "address"];
服务器的响应是一个对象数组,该对象数组可以包含也可以不包含来自field的所有字段 。
var response = [
{"name" : "Tom"}, {"name" : "Jenny", "age" : 25}, ...
];
我需要用空字符串或其他内容填充所有缺少的字段,以便不再有未定义的字段(我无法在服务器上执行此操作)。
到目前为止,我有这个
jQuery(fields).each(function(fieldKey, field){
jQuery(response).each(function(resultKey, result){
if (result[field] == undefined) result[field] = "";
});
});
有没有更好,更有效的方法?
使用typeof
检查变量是否存在。
jQuery(fields).each(function(fieldKey, field){
//fieldKey: index (number); field: array item (string)
jQuery(response).each(function(resultKey, result){
//resultKey: index (number); result: array item (object)
if (typeof result[field] == 'undefined') result[field] = "";
});
});
无需使用jQuery。 以下代码假定存在响应对象。
var fields = ["name", "age", "address"],
i, j;
// for each response object, check the fields
for (i = 0; i < response.length; i++) {
// for each field look if it is present in current response object
for (j = 0; j < fields.length; j++) {
// if not present, create with empty string
if (typeof response[i][fields[j]] === 'undefined') {
response[i][fields[j]] = '';
}
}
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.