0

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

  });

});

より良い、より効率的な方法はありますか?

4

2 に答える 2

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

  });

});
于 2012-08-28T13:17:38.137 に答える
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]] = '';
        }
    }
}
于 2012-08-28T13:19:28.480 に答える