我想通過它的 xp 物件對該陣列進行排序:
[
["438449925949489153", {
"xp": 2
}],
["534152271443415140", {
"xp": 3
}],
["955210908794236938", {
"xp": 1
}]
]
所以它回傳這個陣列:
[
["955210908794236938", {
"xp": 1
}],
["438449925949489153", {
"xp": 2
}],
["534152271443415140", {
"xp": 3
}]
]
我嘗試使用 sort-json npm 模塊執行此操作,但它對第一個值而不是 xp 進行排序
const sortJson = require('sort-json');
sortJson(array)
uj5u.com熱心網友回復:
您可以只使用本機排序:
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 改變原始陣列:如果您不想這樣做,則需要執行原始陣列的淺拷貝。
uj5u.com熱心網友回復:
降序排序:
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
})
uj5u.com熱心網友回復:
我會建議更干凈的實作:
function compare( a, b ) {
if ( a[1] < b[1]){
return -1;
}
if ( a[1] > b[1] ){
return 1;
}
return 0;
}
arr.sort( compare );
或單線:
arr.sort((a,b) => (a[1] > b[1]) ? 1 : ((b[1] > a[1]) ? -1 : 0))
轉載請註明出處,本文鏈接:https://www.uj5u.com/yidong/476933.html
標籤:javascript 数组 排序
下一篇:兩個反向排序陣列的時間復雜度
