[英]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.