如何将两个json对象合并为一个

时间:2012-07-12 17:28:03

标签: json knockout.js

我有一个用于编辑提供者记录的表单。提供者记录与多个地址有关系,因此提供者可以拥有家庭,办公室,度假等地址类型。

来自服务器的json地址对象只带来了提供者所拥有的地址,因此如果提供者只有一个“休假”类型的地址,那么这是唯一的记录,但是在编辑表单中我必须要有所有地址类型,以便编辑现有地址类型或添加新地址类型。

我不知道我的方法是否正常,但我在我的表单中有一个“jsonBaseAddresses”,其中包含所有可能的地址类型,并且此对象使用Knockout绑定到表单(这实际上有效)所以我想要合并带有“jsonBaseAddresses”的“jsonRemoteAddress”,以便拥有“jsonBaseAddresses”,但与远程json对象中的数据合并。

同样,我不知道这是否是正确的方法。感谢任何帮助。这是我想要做的jsFiddle示例。

http://jsfiddle.net/HJrGf/4/

由于

1 个答案:

答案 0 :(得分:1)

为什么不直接迭代远程地址并将它们推送到视图模型中的地址,如?

var vm = new App(jsonBaseAddresses );
for ( var i = 0; i < jsonRemoteAddresses.length; i++){
vm.addresses.push(new Address(jsonRemoteAddresses[i]);
}

等等......

要合并地址,您可以使用以下解决方案:

  1. 您可以将属性引入Address等于Equals并比较字段 识别唯一地址

  2. 选择此帖How to determine equality for two JavaScript objects?中的任何实现 获取地址哈希码并在上面的循环中比较哈希 要合并的地址的代码。我在我的一个中使用了这个解决方案 项目。并查看此http://documentcloud.github.com/underscore/#isEqual