我将这段代码用于根据car
值对数组值进行排序。
const arr = [
{
car: 'audi',
age: 2015
},
{
car: 'bmw',
age: 1999
},
{
car: 'alfa',
age: 2019
},
];
function createSort(property) {
return function compareString(a,b) {
return a[property] < b[property]
}
}
const sortByTitle = createSort('car');
arr.sort(sortByTitle);
console.log(arr);
我不知道为什么它不能排序。
问题是什么?
答案 0 :(得分:3)
短代码:
arr.sort((x, y) =>x.car.localeCompare(y.car));
完整代码:
const arr = [
{
car: 'audi',
age: 2015
},
{
car: 'bmw',
age: 1999
},
{
car: 'alfa',
age: 2019
},
];
let output = arr.sort((x, y) =>x.car.localeCompare(y.car));
console.log(output);
答案 1 :(得分:1)
编辑:@David回答似乎是一个更好的方法!
var arr = [
{
car: 'audi',
age: 2015
},
{
car: 'bmw',
age: 1999
},
{
car: 'alfa',
age: 2019
},
];
arr.sort(function(a, b){
if(a.car< b.car) { return -1; }
if(a.car> b.car) { return 1; }
return 0;
})
console.log(arr)
答案 2 :(得分:0)
排序如下:
const arr = [
{
car: 'audi',
age: 2015
},
{
car: 'bmw',
age: 1999
},
{
car: 'alfa',
age: 2019
},
];
function createSort(property) {
return function compareString(a,b) {
return a[property] > b[property]
}
}
const sortByTitle = createSort('car');
arr.sort(sortByTitle);
console.log(arr);
答案 3 :(得分:0)
这是您可以使用的通用功能,
function createSort (field) {
return function sort (data1, data2) {
let value1 = data1[field]
let value2 = data2[field]
return (value1 == null && value2 != null) ? -1
: (value1 != null && value2 == null) ? 1
: (value1 == null && value2 == null) ? 0
: (typeof value1 === 'string' && typeof value2 === 'string') ? value1.localeCompare(value2)
: (value1 < value2) ? -1 : (value1 > value2) ? 1 : 0
}
}