DIEA
2021-09-04 17:16:50
我有一個 Javascript 數組,我想根據另一個數組中的索引進行排序。在 RI 中可以使用索引向量重新排列向量,但試圖找到一個 Javascript 等價物只是帶來了排序結果,這似乎不是我想要的(我不是在比較對象——我已經有我想要的訂單)。myArray=[obj1, obj2, obj3];myIndices = [1,0,2];期望的輸出:[obj2, obj1, obj3]
2 回答

眼眸繁星
TA貢獻1873條經驗 獲得超9個贊
在我看到您的編輯之前,我實際上并沒有真正理解您的問題。作為一個mea-culpa,這里是一個基于向量的排序方法:
function vectorSort(arr, vector) {
const matrix = new WeakMap()
vector.forEach((indice, index) => matrix.set(arr[index], indice))
arr.sort((a, b) => matrix.get(a) - matrix.get(b))
return arr
}
帶有指向工作小提琴的鏈接

qq_遁去的一_1
TA貢獻1725條經驗 獲得超8個贊
您可以使用一個簡單的reduce函數。
orderVector = (vector, indices) => vector.reduce((a,v,i) => (a[indices[i]] = v, a), []);
let c = [1,"first",3,4,5],
c_ind = [1,0,3,2,4],
orderVector = (vector, indices) => vector.reduce((a,v,i) => (a[indices[i]] = v, a), []);
result = orderVector(c, c_ind);
console.log(result);
添加回答
舉報
0/150
提交
取消