Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/scala/17.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 脚本赢得';不要将数据添加到我的变量中_Javascript - Fatal编程技术网

Javascript 脚本赢得';不要将数据添加到我的变量中

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,

我使用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); 
我在代码运行后检查了数据,没有新添加的数据。有人能看出错误在哪里/为什么不插入数据吗?

试试这个:

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格式的,并自动进行解析,尽管它只是一个字符串;)