寻找一种更好的方法来使用包含更新值/新条目的另一个对象来更新子对象。
这里的参数" pObj“是一个已经有一些孩子的对象,只想用参数”pObj“中可用的最新值来更新数据。
在下面的代码中,我使用的是Kinvey无服务器云平台。"Object.children“,这是Kinvey不支持的--原因不清楚。
下面的代码对我来说工作得很好,但它看起来有点丑陋,也固定了深度。
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;
}发布于 2018-04-10 02:13:44
Kinvey遗留BL使用Node0.10,这可能是你不能使用Object.children的原因吗?
不过,它确实支持lodash,所以也许您可以使用lodash模块中的对象操作选项。
作为替代方案,您可以查看新的Flex Services,这是一个使用node6的微服务层。它允许你内联任何你想要的npm模块,并将整个node.js运行时部署到我们的FSR运行时中。
https://stackoverflow.com/questions/49646951
复制相似问题