我的jsob对象看起来像这样
{"LAB_123":{"abc":"bde"},"LAB_345":{"abc":"efg"}}
第二个json对象是
{"LAB_123":{"xyz":"dfe"},"LAB_345":{"PQR":"ABC"}}
我需要加入这两个对象来创建一个看起来像这个
的json数组{"LAB_123":{"abc":"bde","xyz":"dfe"},"LAB_345":{"abc":"efg","PQR":"ABC"}}
我可以使用循环通过json数组添加键值,但是使用lodash的任何方法都会使这段代码看起来更容易。
答案 0 :(得分:2)
您可以使用lodash的_.merge()
,它以递归方式合并对象。由于merge会改变第一个对象(第一个参数),因此请使用空对象以避免改变原始对象:
const a = {"LAB_123":{"abc":"bde"},"LAB_345":{"abc":"efg"}};
const b = {"LAB_123":{"xyz":"dfe"},"LAB_345":{"PQR":"ABC"}};
const result = _.merge({}, a, b);
console.log(result);
<script src="https://cdnjs.cloudflare.com/ajax/libs/lodash.js/4.17.4/lodash.min.js"></script>
如果您想要一个对象数组,可以使用_.toPairs()
将第一个示例的结果拆分为键/值对,并将它们映射到对象:
const a = {"LAB_123":{"abc":"bde"},"LAB_345":{"abc":"efg"}};
const b = {"LAB_123":{"xyz":"dfe"},"LAB_345":{"PQR":"ABC"}};
const result = _({})
.merge(a, b)
.toPairs()
.map(([key, value]) => ({ [key]: value }))
.value();
console.log(result);
<script src="https://cdnjs.cloudflare.com/ajax/libs/lodash.js/4.17.4/lodash.min.js"></script>