-2

我有一个要添加到现有列表中的对象列表。

我目前拥有的数据是:

var sdata = {"10":{"8":["106","22","1","1","0","0"]}};

所以我做了一个这样的ajax请求:

var result = ajaxFunction('call.php',hid+','+ps[0]+','+ps[1]);
if(result != false){
document.write(result);
sdata += result; //add to it
}

返回并分配给结果的数据是:

{2: {7:[119, 22, 1, 1, 0, 0]}}

但我想知道的是:

sdata += result; 

将新数据添加到“sdata”的正确方法?

4

1 回答 1

2

+=用于加法或字符串连接,而不是连接两个对象。为了得到sdataresult在一起,你循环遍历result每个键,你创建一个同名的键sdata来指向result. 这是一个更清晰的解释,因为 JavaScript 对象不会从一个复制到另一个,它们只是指向。

下面的代码只是一个“浅拷贝”,它只复制第一级的值。它还会覆盖第一个对象中的任何内容。您可以添加条件以防止覆盖。

for(var key in result){              //loop through new results
    if(result.hasOwnProperty(key){   //if it's an end property, not from prototype
        sdata[key] = result[key]     //put new key to old oject pointing to new set of values
    }
}

最终结果是这样的:

sdata = {
    "10" : {"8":["106","22","1","1","0","0"]},
    "2" : {7:[119, 22, 1, 1, 0, 0]}
}
于 2012-04-21T02:35:58.280 回答