猿问

Javascript 相当于 R 的 dataVector[indicesVector]?

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


myArray=[obj1, obj2, obj3];


myIndices = [1,0,2];


期望的输出:


[obj2, obj1, obj3]



DIEA
浏览 183回答 2
2回答

眼眸繁星

在我看到您的编辑之前,我实际上并没有真正理解您的问题。作为一个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

您可以使用一个简单的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);
随时随地看视频慕课网APP

相关分类

JavaScript
我要回答