为了账号安全,请及时绑定邮箱和手机立即绑定

Javascript 相当于 R 的 dataVector[indicesVector]?

Javascript 相当于 R 的 dataVector[indicesVector]?

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

}

带有指向工作小提琴的链接


查看完整回答
反对 回复 2021-09-04
?
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);


查看完整回答
反对 回复 2021-09-04
  • 2 回答
  • 0 关注
  • 182 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号