0

ajax リクエストを使用して json エンコードを返します。

返されるデータは次のようになります。

 {"24": {"24":["205", "22", "1", "1", "0", "0"]}};

に追加しようとしているのはどれですか:

///global set
var data = {"24":{"16":["172","22","1","1","0","0"],"15":["160","22","1","1","0","0"]}};

問題は、私の試みが変数に追加されていないことです。これは私のスクリプトです:

var result = {24: {24:[205, 22, 1, 1, 0, 0]}}; //return data test
var obj = {}
for ( var key in result ){              
if ( result.hasOwnProperty( key ) ) {
    // If the key already exists
    if ( data[ key ] === result[ key ] ) {

        // Empty the temporary object
        obj = {}
        // Loop through the subkeys
        for ( var subkey in result[ key ] ) {              
            if ( result[ key ].hasOwnProperty( [ subkey ] ) ) {

                // Fill in the temporary object
                obj[ subkey ] = result[ key ][ subkey ]
            }
        }

        // Add the new object to the original object
        data[ key ] = obj
    }

    // If the key doesn't exist, do it normally
    else {
        data[ key ] = result[ key ]
       }
    }
}
obj = null

//show change
 console.log(data); 

このコードの実行後にデータをチェックしましたが、新しく追加されたデータはありません。どこに/なぜデータを挿入しないのか、誰もが間違いを見ることができますか?

4

1 に答える 1

1

これを試して:

var data = {"24":{"16":["172","22","1","1","0","0"],"15":["160","22","1","1","0","0"]}};
var result = {"24": {"24":["205", "22", "1", "1", "0", "0"]}};

function forEach(o,cb){
    for(var i in o){
        if (o.hasOwnProperty(i)){
            cb(i);
        }
    }
}

forEach(result,function(key){
    if (!data[key]) data[key]={};
    forEach(result[key],function(subkey){
        if (!data[key][subkey]) data[key][subkey]=[];
        forEach(result[key][subkey],function(i){
            data[key][subkey].push(result[key][subkey][i]);
        });
    });
});

console.log(data);

デモ: http://jsfiddle.net/363uy/

于 2012-04-27T02:12:01.117 に答える