Javascript 脚本赢得';不要将数据添加到我的变量中
我使用ajax请求返回json编码 现在返回数据如下:Javascript 脚本赢得';不要将数据添加到我的变量中,javascript,Javascript,我使用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,
{"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);
我在代码运行后检查了数据,没有新添加的数据。有人能看出错误在哪里/为什么不插入数据吗?试试这个:
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);
Demo:
data[key]==result[key]
那么我应该把它改成什么呢?其他问题:data
有字符串数据,但是result
有整数,.hasOwnProperty([subkey])
-为什么要将数组传递给hasOwnProperty
?不确定你到底想达到什么目的。输出应该是什么样子的?这里是期望的结果-我不知道为什么我的ajax返回整数,而我认为PHP的json_encode总是返回字符串。@Hamish为我刚才检查的混淆道歉-它确实返回字符串数据:)我现在编辑了有关问题的数据以反映这一点。是的,如果数据等于零,它会中断。顺便说一句,这是完全可能的。。想知道如何解决这个问题吗?@Dave你可以用data=data | |{}代码>。Demo:@Dave:或者:if('undefined'!==typeof对象)数据={}代码>如果甚至未定义数据
,此功能也有效。演示:事实上,它现在不工作。console.log错误地显示了所有内容。。见截图第二个屏幕截图显示了“result”的内容-它是字符串数据-@Dave:response选项卡检测到发送的字符串是JSON格式的,并自动进行解析,尽管它只是一个字符串;)