簡體   English   中英

在 sort() 的比較器 function 中使用索引

[英]Use index in comparator function of sort()

我正在尋找一種方法來對數組進行排序並訪問我在比較器 function 中比較的元素的索引。

例如,我希望這樣的事情會起作用:

someArray.sort((a, b, indexOfA, indexOfA) => someFunction(indexOfA) - somFunction(indexOfB));

唯一現實的方法是在排序之前對數組進行Schwartzian 變換以創建[index, element]對:

const transformed = someArray.map((element, index) => [index, element]);

您現在可以根據索引對其進行排序:

transformed.sort((a, b) => someFunction(a[0]) - someFunction(b[0]));

然后再次取消裝飾數組:

someArray = transformed.map(i => i[1]);

您可能已經可以將someFunction調用集成到 Schwartzian 變換中,因此您不必為每個項目重復調用 function:

someArray = someArray.map((element, index) => [someFunction(index), element])
                     .sort((a, b) => a[0] - b[0])
                     .map(i => i[1]);

someArray.lastIndexOf(a)可以提供幫助

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM