Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/450.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_Jquery_Performance - Fatal编程技术网

Javascript 将对象差异添加到";对",;位置

Javascript 将对象差异添加到";对",;位置,javascript,jquery,performance,Javascript,Jquery,Performance,我的服务器有一个不同的对象,需要将其合并到本地表示中。 因此,我需要一种方法来添加对象的一部分,该部分当前在原始表示中未定义 例如: // The serverresponse { "PRIVATE": { "SCREENS": { "WORKSPACE": { "POSTS": { "1363391397125": { "TGT": "13633906

我的服务器有一个不同的对象,需要将其合并到本地表示中。 因此,我需要一种方法来添加对象的一部分,该部分当前在原始表示中未定义

例如:

// The serverresponse
{
  "PRIVATE": {
      "SCREENS": {
          "WORKSPACE": {
              "POSTS": {
                  "1363391397125": {
                      "TGT": "1363390641817",
                      "ACN": "position",
                      "TO": [
                          57.1875,
                          69.21182266009852
                      ]
                  }
              }
          }
      }
  }
}

// This part is similar to my local representation
{
  "PRIVATE": {
      "SCREENS": {
          "WORKSPACE": {
              "POSTS": {}
           }
       }
}


// So I want to insert this part of the given data at same position inside the local data
{
  "1363391397125": {
                    "TGT": "1363390641817",
                    "ACN": "position",
                    "TO": [
                          57.1875,
                          69.21182266009852
                      ]
                  }
}

有很多不同的部分需要插入,因此我正在寻找一个明确的替代方案,以针对我将要使用的每个案例进行迭代。

看到您添加了jQuery标记,您可以使用jQuery的方法,类似于下面的方法:

// The serverresponse
var x = {
    "PRIVATE": {
        "SCREENS": {
            "WORKSPACE": {
                "POSTS": {
                    "1363391397125": {
                        "TGT": "1363390641817",
                            "ACN": "position",
                            "TO": [
                        57.1875,
                        69.21182266009852]
                    }
                }
            }
        }
    }
};

// This part is similar to my local representation
var y = {
    "PRIVATE": {
        "SCREENS": {
            "WORKSPACE": {
                "POSTS": {}
            }
        }
    }
};

// merges x into y
$.extend(y, x); 

// use $.extend(x, y); if you intended it to be the other way around.

演示-使用
$.extend()
合并对象



看到您添加了jQuery标记,您可以使用jQuery的方法,如下所示:

// The serverresponse
var x = {
    "PRIVATE": {
        "SCREENS": {
            "WORKSPACE": {
                "POSTS": {
                    "1363391397125": {
                        "TGT": "1363390641817",
                            "ACN": "position",
                            "TO": [
                        57.1875,
                        69.21182266009852]
                    }
                }
            }
        }
    }
};

// This part is similar to my local representation
var y = {
    "PRIVATE": {
        "SCREENS": {
            "WORKSPACE": {
                "POSTS": {}
            }
        }
    }
};

// merges x into y
$.extend(y, x); 

// use $.extend(x, y); if you intended it to be the other way around.

演示-使用
$.extend()
合并对象



那么您想合并这两个对象,但仅将以前未在原始对象中定义的属性放入原始对象中?如果该属性在原始文件中已经存在,即使服务器响应中出现不同的值,也不要使用它?因此,您希望合并这两个对象,但只有在原始文件中以前未定义属性时才将其放入原始文件中?如果该属性已经存在于原始文件中,即使服务器响应中出现不同的值,也不要使用它。我认为
$.extend()
并不能完全满足OP的要求(尽管他们的问题并不十分清楚)。我在上面的评论中要求澄清OP的问题,但我认为他们只想在原始对象还没有该属性的情况下,从新对象将内容放入原始对象。@jfriend00:+1。如果涉及更多的检查,并且只有一些部分需要合并,那么
$.extend()
将是泛型的,我将不得不重新考虑我的答案。@François Wahl THX正是我所需要的。很长时间没有使用extend。@Bernhard:
extend()
非常通用,如果您在
POSTS
中已经有数据,例如在
y
对象中,它将丢失并被
x
对象中的
POSTS
覆盖。要保留现有数据,您必须单独合并每个子对象,类似于:
$.extend(y.PRIVATE.SCREENS.WORKSPACE.POSTS,x.PRIVATE.SCREENS.WORKSPACE.POSTS)我相信你可以写一个重新草书的方法,它迭代每个对象和子对象,并在每个对象上使用
extend()
。对,还需要未设置的部分,所以我认为“强制”扩展是我最终需要的。但是extend是正确的工作点,我认为我不认为
$。extend()
完全符合OP的要求(尽管他们的问题并不十分清楚)。我在上面的评论中要求澄清OP的问题,但我认为他们只想在原始对象还没有该属性的情况下,从新对象将内容放入原始对象。@jfriend00:+1。如果涉及更多的检查,并且只有一些部分需要合并,那么
$.extend()
将是泛型的,我将不得不重新考虑我的答案。@François Wahl THX正是我所需要的。很长时间没有使用extend。@Bernhard:
extend()
非常通用,如果您在
POSTS
中已经有数据,例如在
y
对象中,它将丢失并被
x
对象中的
POSTS
覆盖。要保留现有数据,您必须单独合并每个子对象,类似于:
$.extend(y.PRIVATE.SCREENS.WORKSPACE.POSTS,x.PRIVATE.SCREENS.WORKSPACE.POSTS)我相信你可以写一个重新草书的方法,它迭代每个对象和子对象,并在每个对象上使用
extend()
。对,还需要未设置的部分,所以我认为“强制”扩展是我最终需要的。但我认为扩展是正确的工作点