拥有字段的名称,如何使用空白数据初始化对象的未定义字段?

时间:2012-08-28 12:54:22

标签: javascript initialization undefined field

在Javascript中,我有一个字符串数组,表示对象字段的所有可能名称。

var fields = ["name", "age", "address"];

服务器的响应是一个对象数组,可能包含也可能不包含字段中的所有字段。

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] = "";

  });

});

有更好更有效的方法吗?

2 个答案:

答案 0 :(得分:0)

使用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] = "";

  });

});

答案 1 :(得分:0)

无需使用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]] = '';
        }
    }
}