我有一个要根据另一个数组中的索引排序的Javascript数组。在RI中,可以使用索引向量重新排列向量,但是尝试找到等效的Javascript只是带来了排序的结果,这似乎并不是我想要的(我没有进行对象的比较-我已经有我想要的订单了。
myArray = [obj1,obj2,obj3];
myIndices = [1,0,2];
所需的输出:
[obj2,obj1,obj3]
答案 0 :(得分:1)
在看到您的修改之前,我实际上并不真正理解您的问题。作为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
}
用link修饰小提琴
答案 1 :(得分:1)
您可以使用简单的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);