如何在节点js中使用lodash按键注入值

时间:2017-06-17 18:29:40

标签: json node.js lodash

我的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的任何方法都会使这段代码看起来更容易。

1 个答案:

答案 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>