按对象值对数组排序
Sorting a array by its object value
我想按 xp 对象对这个数组进行排序:
[
["438449925949489153", {
"xp": 2
}],
["534152271443415140", {
"xp": 3
}],
["955210908794236938", {
"xp": 1
}]
]
所以returns这个数组:
[
["955210908794236938", {
"xp": 1
}],
["438449925949489153", {
"xp": 2
}],
["534152271443415140", {
"xp": 3
}]
]
我尝试使用 sort-json npm 模块来执行此操作,但它对第一个值而不是 xp
进行了排序
const sortJson = require('sort-json');
sortJson(array)
降序排列:
arr.sort((a,b) =>{
if (a[1].xp < b[1].xp) return 1
else return -1
})
升序排序:
arr.sort((a,b) =>{
if (a[1].xp < b[1].xp) return -1
else return 1
})
您可以只使用本机 sort:
let data = [
["438449925949489153", {
"xp": 2
}],
["955210908794236938", {
"xp": 3
}],
["955210908794236938", {
"xp": 1
}]
];
const ascending = (a,b) => a[1].xp - b[1].xp;
const descending = (a,b) => b[1].xp - a[1].xp;
data.sort(ascending);
console.log(data)
data.sort(descending);
console.log(data)
注意 sort
改变了 原始数组:如果你不想这样做,你需要对原始数组执行 shallow copy数组。
我会建议更简洁的实现方式:
function compare( a, b ) {
if ( a[1] < b[1]){
return -1;
}
if ( a[1] > b[1] ){
return 1;
}
return 0;
}
arr.sort( compare );
或one-liner:
arr.sort((a,b) => (a[1] > b[1]) ? 1 : ((b[1] > a[1]) ? -1 : 0))
我想按 xp 对象对这个数组进行排序:
[
["438449925949489153", {
"xp": 2
}],
["534152271443415140", {
"xp": 3
}],
["955210908794236938", {
"xp": 1
}]
]
所以returns这个数组:
[
["955210908794236938", {
"xp": 1
}],
["438449925949489153", {
"xp": 2
}],
["534152271443415140", {
"xp": 3
}]
]
我尝试使用 sort-json npm 模块来执行此操作,但它对第一个值而不是 xp
进行了排序const sortJson = require('sort-json');
sortJson(array)
降序排列:
arr.sort((a,b) =>{
if (a[1].xp < b[1].xp) return 1
else return -1
})
升序排序:
arr.sort((a,b) =>{
if (a[1].xp < b[1].xp) return -1
else return 1
})
您可以只使用本机 sort:
let data = [
["438449925949489153", {
"xp": 2
}],
["955210908794236938", {
"xp": 3
}],
["955210908794236938", {
"xp": 1
}]
];
const ascending = (a,b) => a[1].xp - b[1].xp;
const descending = (a,b) => b[1].xp - a[1].xp;
data.sort(ascending);
console.log(data)
data.sort(descending);
console.log(data)
注意 sort
改变了 原始数组:如果你不想这样做,你需要对原始数组执行 shallow copy数组。
我会建议更简洁的实现方式:
function compare( a, b ) {
if ( a[1] < b[1]){
return -1;
}
if ( a[1] > b[1] ){
return 1;
}
return 0;
}
arr.sort( compare );
或one-liner:
arr.sort((a,b) => (a[1] > b[1]) ? 1 : ((b[1] > a[1]) ? -1 : 0))