相当于R的dataVector [indicesVector]的Javascript吗?

时间:2019-08-05 15:39:30

标签: javascript arrays r

我有一个要根据另一个数组中的索引排序的Javascript数组。在RI中,可以使用索引向量重新排列向量,但是尝试找到等效的Javascript只是带来了排序的结果,这似乎并不是我想要的(我没有进行对象的比较-我已经有我想要的订单了。

myArray = [obj1,obj2,obj3];

myIndi​​ces = [1,0,2];

所需的输出:

[obj2,obj1,obj3]

2 个答案:

答案 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);