我正在嘗試.sort()通過他們的起始洞對高爾夫組進行排序。我需要按以下順序列出組。1A、1B、2A、2B等等等等。
目前,這就是我對資料進行排序的方式:
<% groups = groups.sort((a, b) => (a.position > b.position && a.letter > b.letter) ? 1 : -1)%>
請忽略例外的 HTML 標簽,這是在一個 e.js 模板中實作的
目前,組顯示如下:

這與我需要的順序相去甚遠,如果有人對如何提供幫助有任何意見,將不勝感激!
筆記:
“位置”屬性是數字(1A 中的 1) “字母”屬性是字母(1A 中的 A)
有問題的陣列(在控制臺中登錄)

uj5u.com熱心網友回復:
您需要單獨執行比較 - 首先比較數字并在它們不同時適當地回傳。否則,如果數字相同,則回傳成員之間的差異.localeCompare,它檢查一個字符是否在另一個之前。
const groups = [
{ position: 1, letter: 'B' },
{ position: 2, letter: 'B' },
{ position: 1, letter: 'A' },
{ position: 2, letter: 'B' },
{ position: 2, letter: 'A' },
{ position: 1, letter: 'B' },
];
groups.sort((a, b) =>
(a.position - b.position) ||
a.letter.localeCompare(b.letter)
);
console.log(groups.map(group => group.position group.letter));
uj5u.com熱心網友回復:
我想你可以分類拖
排序位置 => sorted_position 陣列
排序字母 sorted_position 陣列 => sorted_result
讓資料 = [ {位置:22,字母:“B”},{位置:222,字母:“A”},{位置:24,字母:“A”},{位置:2,字母:“A” },{位置:2,字母:“B”},{位置:1,字母:“B”},{位置:1,字母:“A”},{位置:4,字母:“B”}, {位置:3,字母:“B”},{位置:3,字母:“A”},{位置:5,字母:“A”},{位置:5,字母:“B”},]讓sorted_position = data.sort(function(item1, item2) { if (item1.position < item2.position) { return -1 } return 1; }); 讓 sorted_final = sorted_position.sort(function (item1, item2) { if (item1.position === item2.position) { if (item1.letter < item2.letter) return -1; } return 1 }); console.log("sorted_final: ", sorted_final)
uj5u.com熱心網友回復:
我認為最簡單的方法是對陣列進行 2 次排序。第一次按位置排序 => 獲取陣列 sorted_position 第二次從陣列 sorted_position 中按字母排序
前任:
let data = [
{position: 22, letter : "B"},
{position: 222, letter : "A"},
{position: 24, letter : "A"},
{position: 2, letter : "A"},
{position: 2, letter : "B"},
{position: 1, letter : "B"},
{position: 1, letter : "A"},
{position: 4, letter : "B"},
{position: 3, letter : "B"},
{position: 3, letter : "A"},
{position: 5, letter : "A"},
{position: 5, letter : "B"},
]
let sorted_position = data.sort(function(item1, item2) {
if (item1.position < item2.position) {
return -1
}
return 1;
});
let sorted_final = sorted_position.sort(function (item1, item2) {
if (item1.position === item2.position) {
if (item1.letter < item2.letter)
return -1;
}
return 1
});
console.log("sorted_final: ", sorted_final)
轉載請註明出處,本文鏈接:https://www.uj5u.com/gongcheng/508163.html
標籤:javascript html
上一篇:在JS檔案中運行PHP腳本
