2017-06-17 31 views
0

我jsob物体看起来像这样如何通过按键对值使用lodash在节点JS

{"LAB_123":{"abc":"bde"},"LAB_345":{"abc":"efg"}} 

二JSON对象注入是

{"LAB_123":{"xyz":"dfe"},"LAB_345":{"PQR":"ABC"}} 

我需要加入这两个对象来创建一个JSON array应该看起来像这样

{"LAB_123":{"abc":"bde","xyz":"dfe"},"LAB_345":{"abc":"efg","PQR":"ABC"}} 

我可以通过json数组循环来添加键值,但是有没有任何方法od使用lodash会使这段代码看起来更容易。

+0

https://lodash.com/docs/4.17.4#merge –

回答

1

您可以使用lodash的_.merge()递归合并对象。由于合并变异第一对象(1 PARAM),使用空对象,以避免变异原始对象:

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>