如何对对象排序并将某些类型的字符串转移到列表的末尾



我正在尝试通过"名称"键对对象进行排序。在这里,一些值以"夏季"开头,在排序需要将这些对象放置为列表的终点。有任何想法看起来一次。

这是我的列表:

var list = [
    { name: 'Summer_Mango', id: 20055 },
    { name: 'Orange', id: 20053 },
    { name: 'Apple', id: 45652 },
    { name: 'Grape', id: 20066 },
    { name: 'Summer_Watermelon', id: 20073 },
    { name: 'Banana', id: 20010 }
];
对我的清单进行排序之后,需要像这样

var list = [
    { name: 'Apple', id: 45652 },
    { name: 'Banana', id: 20010 }
    { name: 'Grape', id: 20066 },
    { name: 'Orange', id: 20053 },
    { name: 'Summer_Mango', id: 20055 },
    { name: 'Summer_Watermelon', id: 20073 }, 
];

您可以自定义分类条件以满足您的要求。

list = list.sort((a, b) => { 
   if (a.name.startsWith('Summer')) {return 1; } 
   if (b.name.startsWith('Summer')) {return -1;} 
   return a.name.localeCompare(b.name) 
});

var list = [
    { name: 'Summer_Mango', id: 20055 },
    { name: 'Orange', id: 20053 },
    { name: 'Apple', id: 45652 },
    { name: 'Grape', id: 20066 },
    { name: 'Summer_Watermelon', id: 20073 },
    { name: 'Banana', id: 20010 }
];
list = list.sort((a, b) => { 
   if (a.name.startsWith('Summer')) {return 1; } 
   if (b.name.startsWith('Summer')) {return -1;} 
   return a.name.localeCompare(b.name) 
});
console.log(list)

最新更新