我有这样的数组
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”方法,我该怎么办?这是最好的方法
您可以使用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);
尝试一下:
years.sort((c1, c2) => {
if (c1.name > c2.name) return -1;
if (c1.name < c2.name) return 1;
return 0;
});
您快到了...在您的排序回调中做了一点改动就完成了:
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);