为了账号安全,请及时绑定邮箱和手机立即绑定

如何使用字符串类型对象的键值对对象数组进行排序

如何使用字符串类型对象的键值对对象数组进行排序

尚方宝剑之说 2022-10-08 17:17:23
我有一个这样的数组 let years =[       {id: 3, name: "2016", age: "None"},       {id: 1, name: "2017", age: "None"},       {id: 2, name: "2015", age: "None"},       {id: 5, name: "2018", age: "None"},       {id: 3, name: "2018/2019", age: "None"}       ]       years.sort((c1, c2) => {        return c2.name - c1.name;       });       console.log(years);       我无法处理这种“2018/2017”方式我该怎么做最好的方法是什么
查看完整描述

4 回答

?
MM们

TA贡献1886条经验 获得超2个赞

您可以使用localeCompare


const years = [

    { id: 3, name: '2016', age: 'None' },

    { id: 1, name: '2017', age: 'None' },

    { id: 2, name: '2015', age: 'None' },

    { id: 5, name: '2018', age: 'None' },

    { id: 3, name: '2018/2019', age: 'None' },

];


years.sort((c1, c2) => c2.name.localeCompare(c1.name));


console.log(years);


查看完整回答
反对 回复 2022-10-08
?
Qyouu

TA贡献1786条经验 获得超11个赞

你快到了...只需在排序回调中稍作改动,就完成了::


let years = [

    { id: 3, name: '2016', age: 'None' },

    { id: 1, name: '2017', age: 'None' },

    { id: 2, name: '2015', age: 'None' },

    { id: 5, name: '2018', age: 'None' },

    { id: 3, name: '2018/2019', age: 'None' },

];

years.sort((c1, c2) => {

    var n1 = c1.name;

    var n2 = c2.name;

    if(n1 > n2){return -1;

    }else if(n2 > n1){ return 1;

}else{return 0;}

   });

console.log(years);


查看完整回答
反对 回复 2022-10-08
?
慕容森

TA贡献1853条经验 获得超18个赞

你可以使用 lodash_.sortBy


var years =

[{id: 5, name: "2018", age: "None"},

 {id: 3, name: "2018/2017", age: "None"},

 {id: 1, name: "2017", age: "None"},

 {id: 3, name: "2016", age: "None"},

 {id: 2, name: "2015", age: "None"}]


_.sortBy(years, ['name']);

输出将是

//img1.sycdn.imooc.com//63414054000105ea04610207.jpg

查看完整回答
反对 回复 2022-10-08
?
红糖糍粑

TA贡献1815条经验 获得超6个赞

尝试这个:


years.sort((c1, c2) => {

  if (c1.name > c2.name) return -1;

  if (c1.name < c2.name) return 1;

  return 0;

});


查看完整回答
反对 回复 2022-10-08
  • 4 回答
  • 0 关注
  • 83 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信