与unionObject相比,找到obj1中遗漏的字段的最佳/最干净的解决方案是什么,并添加值为null的缺失字段; 例如object1:
var object1= { id: '123',
name: 'test1'
}
unionObject是:
var unionObject = { id: '124',
name: 'test2',
type: 'type2',
files:
{
http: 'test12.com',
https: 'test2.com'
}
}
所以这里object1缺少字段为http和https并且键入的文件;所以我想要的输出是:
var desiredOutput= { id: '123',
name: 'test1',
type: null,
files:
{
http: null,
https: null
}
}
请注意,这不是我的deiredoutput:
var notDesiredOutput= { id: '123',
name: 'test1',
type: null,
files: null
}
Node.JS中最好/最干净的方法是什么? NPM上是否有任何模块以干净的方式进行?
由于
答案 0 :(得分:1)
这是一个简单的解决方案。它使用lodash,但并非绝对必要。您可以将_.isUndefined
和_.isPlainObject
替换为其简单的JS等效项。
function inferFromUnion(obj, union) {
Object.keys(union).forEach(function(key) {
if (_.isUndefined(obj[key])) {
if (_.isPlainObject(union[key])) {
obj[key] = {};
inferFromUnion(obj[key], union[key]);
} else {
obj[key] = null;
}
}
});
}
var unionObject = {
id: '124',
name: 'test2',
type: 'type2',
files: {
http: 'test12.com',
https: 'test2.com'
}
};
var object1 = {
id: '123',
name: 'test1'
};
inferFromUnion(object1, unionObject);
console.log(object1);
document.write(JSON.stringify(object1));

<script src="//cdnjs.cloudflare.com/ajax/libs/lodash.js/2.4.1/lodash.min.js"></script>
&#13;