javascript 使用带find的BOTH filter时获取数组的原始顺序

k10s72fa  于 2023-03-16  发布在  Java
关注(0)|答案(2)|浏览(102)

我有两个对象数组。
a)此单位(保存单位的所有信息)
B)item.units(仅保存正在使用的单元的ID)
我试图将完整的单元与单元ID匹配。下面的方法可以工作,但它会使单元脱离其原始顺序。
item.unit将有一个按特定顺序排列的单元id数组,比如说1、2、3、4
然后,我需要将
this.units中的完整单元附加到item.unit中,但保持相同的顺序1、2、3、4
此代码将整个单位与项目单位进行匹配,但它使用的顺序是
this.units而不是item.unit**,因此最终结果类似于4、2、1、3

previewSectionInfo(item) {
    const sectionsUnits = this.units.filter((u) => {
        return item.units.find(el => el.id == u.id)
    })
    item.units = sectionsUnits 
}
to94eoyn

to94eoyn1#

我想我应该用map()代替item.unit(保持顺序),并从this.units返回相应的记录。

const item = {};
item.units = [1,3,5];

//const thiss = {};
this.units = [
  {id:1,name:"one"},
  {id:2,name:"two"},
  {id:3,name:"three"},
  {id:4,name:"four"},
  {id:5,name:"five"}
 ];

function previewSectionInfo() {
  const specificUnits = item.units.map(
    function(unitID){
      return this.units.find(el => el.id == unitID);
    }
  ) 
  console.log(specificUnits);
}

previewSectionInfo();
pepwfjgg

pepwfjgg2#

刚刚找到了答案。对于其他有这个问题的人来说,这里就是我现在所拥有的:

const sectionsUnits = item.units.map(p => {
    return Object.assign(...this.units.filter(i => i.id == p.id))
})

相关问题