Javascript 两个对象/数组之间的差异

Javascript 两个对象/数组之间的差异,javascript,jquery,Javascript,Jquery,我有两个对象,它们是JSON中PHP的关联数组。它们的结构如下´: [object] ["green"] ['value1']=integer ['value1']=array... ["blue"] ['value1']=integer ['value1']=array... [...] 此对象的第一个版本使用JSON定期从Web服务器加载。 通过从webserver接收这个新的JSON字符串,当

我有两个对象,它们是JSON中PHP的关联数组。它们的结构如下´:

[object]
    ["green"]
         ['value1']=integer
         ['value1']=array...
    ["blue"]
         ['value1']=integer
         ['value1']=array...
    [...]
此对象的第一个版本使用JSON定期从Web服务器加载。 通过从webserver接收这个新的JSON字符串,当前对象移动到变量“oldObj”,而新数据存储到变量“newObj”中。 新对象的元素可能比旧对象少,如下所示:

[newObj]
    ["green"]
         ['value1']=integer
         ['value1']=array...
正如你所见:“蓝色”不见了

现在我需要这些元素,它们是旧对象的一部分/这意味着:在新对象中缺少这些元素(在本例中:元素“blue”)

我尝试了以下方法,但没有成功:

[...]
    var newObj=data;
    $.each (oldObj,function(i,n)
            {if (newObj.i.length<1) {alert('missing: '+i);}
            }
         );//end foreach
[…]
var newObj=数据;
$.each(oldObj,函数(i,n)

{如果(newObj.i.length根据您的描述,我认为newObj或oldObj可以写成:

var newObj = {
    "green": [
        integer,
        [array]
    ],
    "blue": [
        integer,
        [array]
    ]
};    
是这样吗

您可以使用:

for(p in Obj){
    if(Obj.hasOwnProperty(p)){
        // do something with p
    }
}  

循环遍历对象的属性。

应该是
newObj[i]
,但这也帮不了你。对象没有“长度”像数组一样。这可能会有帮助。@Felix Kling我搜索了Tour以便找到答案,但我没有找到你的链接。谢谢你-我会检查它。@Felix Kling@Neeraj+1-这些链接帮助我找到一个解决方案——与wong2的答案相结合。非常感谢!它不应该是(p in oldObj){if(newObj.hasownproperty(p)){//用p}做点什么?}@Bndr当然可以,我只是建议循环对象属性的一般方法。