首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >将具有某些属性的对象移到数组前面

将具有某些属性的对象移到数组前面
EN

Stack Overflow用户
提问于 2021-07-08 11:27:44
回答 2查看 28关注 0票数 0

假设我有一个名为dogs的数组。我想要对我的狗进行排序,其中具有Shiba属性的狗将在开始,所有其他品种将在中间,没有品种的狗将在数组的末尾。

代码语言:javascript
复制
let dogs = [
  {id: 0, breed: 'Pug'},
  {id: 1, breed: 'Shiba'},
  {id: 2},
  {id: 3, breed: 'Shar Pei'},
]

结果应该是这样的:

代码语言:javascript
复制
[
  {id: 1, breed: 'Shiba'},
  {id: 0, breed: 'Pug'},
  {id: 3, breed: 'Shar Pei'},
  {id: 2},
]
EN

回答 2

Stack Overflow用户

发布于 2021-07-08 11:43:23

迭代数组并根据过滤后的数据创建单独的临时数组,然后组合它们以返回最终数组。

代码语言:javascript
复制
let dogs = [
  {id: 0, breed: 'Pug'},
  {id: 1, breed: 'Shiba'},
  {id: 2},
  {id: 3, breed: 'Shar Pei'},
];

const arrangeList = (list) => {
  let finalList = [];
  const breedList = [];
  const nonBreedList = [];
  for (obj of list) {
    if (obj.breed === "Shiba") {
      finalList.push(obj);
    } else if (obj.breed?.length > 0){
      breedList.push(obj);
    } else {
      nonBreedList.push(obj);
    }
  }
  return [...finalList, ...breedList, ...nonBreedList];
}

console.log(arrangeList(dogs));

票数 -1
EN

Stack Overflow用户

发布于 2021-07-08 11:45:28

给你;

代码语言:javascript
复制
    let dogs = [
      {id: 0, breed: 'Pug'},
      {id: 1, breed: 'Shiba'},
      {id: 2},
      {id: 3, breed: 'Shar Pei'},
    ]
    
    const sorting = (arr) => {
      arr.map(obj => {
        if (obj.breed == 'Shiba') {
          dogs.splice(dogs.indexOf(obj), 1)
          dogs.unshift(obj)
        }
    
        if (!obj.breed) {
          dogs.splice(dogs.indexOf(obj), 1)
          dogs.push(obj)
        }
      })
      return arr;
    }
    
    console.log(sorting(dogs))

票数 -1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/68295248

复制
相关文章

相似问题

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