Javascript 根据数字数组对字符串数组排序:另一个版本(不重复!!)

Javascript 根据数字数组对字符串数组排序:另一个版本(不重复!!),javascript,arrays,sorting,Javascript,Arrays,Sorting,我知道我上传了一个类似的问题,但我在这里的意图不同,所以这不是一个重复的问题 我想根据另一个数字数组对数组进行排序。更具体地说,如果1是数字数组的第n个元素,我想重新排列目标数组,以便原始数组中的第n个元素是第一个元素,依此类推。比如, //案例1 常量输入=[“a”、“b”、“c”、“d”、“e”]; 常量顺序=[2,4,5,1,3]; 预期结果:[“d”、“a”、“e”、“b”、“c”]; //案例2 常量输入=[“a”、“b”、“c”、“d”、“e”]; 常量顺序=[3,1,4,5,2];

我知道我上传了一个类似的问题,但我在这里的意图不同,所以这不是一个重复的问题

我想根据另一个数字数组对数组进行排序。更具体地说,如果1是数字数组的第n个元素,我想重新排列目标数组,以便原始数组中的第n个元素是第一个元素,依此类推。比如,

//案例1
常量输入=[“a”、“b”、“c”、“d”、“e”];
常量顺序=[2,4,5,1,3];
预期结果:[“d”、“a”、“e”、“b”、“c”];
//案例2
常量输入=[“a”、“b”、“c”、“d”、“e”];
常量顺序=[3,1,4,5,2];
预期结果:[“b”、“e”、“a”、“c”、“d”];
执行上述操作的Javascript代码是什么?有什么建议吗


提前多谢

无需排序,您只需应用您拥有的排列:

const result = [];
for (let i=0; i<order; i++)
  result[order[i]-1] = input[i];
const result=[];

对于(设i=0;i这应该有效:

const sorted = input.slice().sort((a, b) => {
    const indexA = input.indexOf(a);
    const indexB = input.indexOf(b);
    return order[indexA] - order[indexB];
});

我们对输入进行切片,使其不会发生变异,并更改数组中值的索引。

或然后。最简单的方法可能是先生成一个对象,然后
input.sort((a,b)=>obj[a]-obj[b])
我已经编辑了我的答案,因此它将始终有效