我有一个 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
提交
取消