首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >JavaScript将一系列对象组合在一起

JavaScript将一系列对象组合在一起
EN

Stack Overflow用户
提问于 2021-04-07 19:03:22
回答 2查看 46关注 0票数 0

我有以下代码,其中我有一组obj b,其中通过elementsa中定义对它们进行分组的方式。

我对如何做这件事有些疑惑。例如,滚动ab是否正确

你能帮我一下吗?

代码语言:javascript
复制
const a = [{
    _id: 0,
    elements: ['aasa', 'cccx', 'zzzx', 'sd']
  },
  {
    _id: 1,
    elements: ['bb', 'xx']
  }
];

const b = [{
    _id: 'aasa',
    info: "sssas"
  },
  {
    _id: 'bb'
  },
  {
    _id: 'zzzx',
    info: "ssss"
  },
  {
    _id: 'cccx',
    info: "sss"
  },
  {
    _id: 'xx'
  }
];

// result
[
  [{
      _id: 'aasa',
      info: "sssas"
    },
    {
      _id: 'zzzx',
      info: "ssss"
    },
    {
      _id: 'cccx',
      info: "sss"
    }
  ],
  [{
      _id: 'bb'
    },
    {
      _id: 'xx'
    }
  ]
];

c = a.map(el => el.elements)


const p = b
  //.map(el => el.elements)
  .reduce(function(prev, curr) {
    //if
    prev.push(curr);
    return prev;
  }, []);

//console.log("End",p)
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2021-04-07 19:10:56

您可以首先将b更改为一个查找对象(这里我使用了一个Map),其中每个id都是一个指向对象本身的键:

代码语言:javascript
复制
// Transform `b` into a Map of the form:
Map {
  'aasa' => {
    _id: 'aasa',
    info: "sssas"
  },
  'bb' => {
    _id: 'bb'
  }
  // ... etc ...
}

然后,对于a中的每个对象,可以在elements数组上进行映射,并使用该对象中的id作为查找对象中的键,以获得具有该id的关联对象。在执行映射之前,您可以首先使用映射上的.has过滤查找表中不存在的任何键(即: in ):

代码语言:javascript
复制
const a = [{ _id: 0, elements: ['aasa', 'cccx', 'zzzx', 'sd'] }, { _id: 1, elements: ['bb', 'xx'] } ];
const b = [{ _id: 'aasa', info: "sssas" }, { _id: 'bb' }, { _id: 'zzzx', info: "ssss" }, { _id: 'cccx', info: "sss" }, { _id: 'xx' } ];

const lut = new Map(b.map(obj => [obj._id, obj]));
const res = a.map(({elements}) => elements.filter(key => lut.has(key)).map(key => lut.get(key)));
console.log(res);

票数 0
EN

Stack Overflow用户

发布于 2021-04-07 19:17:51

这应该是可行的

代码语言:javascript
复制
const c = a.map(el1 => {
   return b.filter(el2 => {
      return el1.elements.includes(el2._id)
   })
});
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/66984757

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档