寻找更好的方法来使用包含更新值/新条目的另一个对象来更新对象的子对象。
这里param“pObj”是一个已经有些孩子的对象,只想用param“data”中可用的最新值更新pObj。
在代码下方,我使用的是Kinvey无服务器云平台。 Kinvey不支持“Object.children” - 不清楚原因。
下面的代码对我来说工作正常,但它看起来也很难看也固定深度。
function mergeObjects(pObj, data) {
var tempObj = {};
if (pObj) {
tempObj = pObj;
}
if (typeof(data) == "object") {
for (var j in data) {
if (!tempObj[j]) {
tempObj[j] = {};
}
if (typeof(data[j]) == "object") {
for (var k in data[j]) {
if (!tempObj[j][k]) {
tempObj[j][k] = {};
}
if (typeof(data[j][k]) == "object") {
for (var l in data[j][k]) {
if (!tempObj[j][k][l]) {
tempObj[j][k][l] = {};
}
tempObj[j][k][l] = data[j][k][l];
}
} else {
tempObj[j][k] = data[j][k];
}
}
} else {
tempObj[j] = data[j];
}
}
}
return tempObj;
}
答案 0 :(得分:0)
Kinvey传统BL使用节点0.10,这可能是你不能使用Object.children的原因吗?
它确实支持lodash,所以也许你可以使用lodash模块中的对象操作选项。
作为替代方案,您可以查看新的Flex Services,一个使用node6的微服务层。它允许您内联任何所需的npm模块,并将整个node.js运行时部署到我们的FSR运行时。