如何解决lodash使用收集数据生成深层对象
您好,我可以访问这些数据参考
const GlobalDataA = { uid0: {},uid1: {},uid2: {} };
const GlobalDataB = { uid3: {},uid4: {},uid5: {} };
const mapperA = ['uid0','uid1'];
const mapperB = ['uid3','uid4'];
const range = 4;
我如何轻松地与Lodash一起使用键uid生成一个新的collections对象
{
uid0: { uid3: [0,1,2,3],uid4: [0,3] },uid1: { uid3: [0,}
我知道如何继续生成集合数组
const test = mapperA.map((A) => mapperB.map((B) => _.range(range).map((value,i) => i)));
它会给我这个
但是我的目标是使用这样的uid键生成一个新对象
理想情况下,保持清洁的1或2行公式会很棒! 我尝试从loadash中拾取和zipObject失败! 谢谢
解决方法
从_.map()
调用中返回[key,value]对,并使用_.fromPairs()
转换为对象:
const mapperA = ['uid0','uid1'];
const mapperB = ['uid3','uid4'];
const range = 4;
const result = _.fromPairs(mapperA.map((A) =>
[
A,_.fromPairs(mapperB.map((B) => [
B,_.range(range)
]))
])
);
console.log(result)
<script src="https://cdnjs.cloudflare.com/ajax/libs/lodash.js/4.17.20/lodash.min.js" integrity="sha512-90vH1Z83AJY9DmlWa8WkjkV79yfS2n2Oxhsi2dZbIv0nC4E6m5AbH8Nh156kkM7JePmqD6tcZsfad1ueoaovww==" crossorigin="anonymous"></script>
使用香草JS,您可以将_.fromPairs()
替换为Object.fromEntries()
,并使用Array.from()
生成范围:
const mapperA = ['uid0','uid4'];
const range = 4;
const result = Object.fromEntries(mapperA.map((A) =>
[
A,Object.fromEntries(mapperB.map((B) => [
B,Array.from({ length: range },(_,i) => i)
]))
])
);
console.log(result)
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。