我有2个JSON对象默认和实际,它们可以是NESTED。我想编写一个javascript算法来比较和交换默认值和实际值之间的值。但我陷入困境,只能处理JSON的最外层
以下是示例:
默认值:
{
username : "string",
phone : null,
school : "string",
GPA : {
major : null,
minor : null
}
}
实际:
{
username : "David",
phone : 12345,
school : "Harvard",
password : "david@harvard"
GPA : {
major : 3.9
}
}
在差异和交换价值之后,结果应为:
{
username : "David",
phone : 12345,
school : "Harvard",
GPA : {
major : 3.9,
mimor : null
}
}
这个想法是默认模型,如果响应有额外的属性,如密码,算法应该删除这样的属性。
另一方面,如果响应没有require属性,则算法应填写默认值。
因此,最终结果应仅包含在默认模型中定义的键,并且值将来自响应,如果键不存在则使用默认键值对。
答案 0 :(得分:1)
如果你可以使用jQuery,那么$ .extend()可以用来完成这个。
var def = {
username : "string",
phone : null,
school : "string",
GPA : {
major : null,
minor : null
}
}
var actual = {
username : "David",
phone : 12345,
school : "Harvard",
password : "david@harvard",
GPA : {
major : 3.9
}
}
var extended = $.extend(true, {}, def, actual);
这是一个应该证明这一点的jsfiddle。 https://jsfiddle.net/38L808y1/