如何使用Javascript根据另一个数组的对应元素的属性对数组进行排序?

如何使用Javascript根据另一个数组的对应元素的属性对数组进行排序?,javascript,arrays,Javascript,Arrays,假设我有两个数组。一是: A = [a, b, c, d] 二是, B = [w, x, y, z] A中的每个元素对应于B (i.e. a -> w, b -> x, c -> y, d -> z) (eg. w.value = 3, x.value = 2, y.value = 1, z.value = 4) 现在我想对数组A按照B元素的属性(比如值)的递增顺序进行排序 (i.e. a -> w, b -> x, c -> y, d ->

假设我有两个数组。一是:

A = [a, b, c, d]
二是,

B = [w, x, y, z]
A中的每个元素对应于B

(i.e. a -> w, b -> x, c -> y, d -> z)
(eg. w.value = 3, x.value = 2, y.value = 1, z.value = 4)
现在我想对数组A按照B元素的属性(比如值)的递增顺序进行排序

(i.e. a -> w, b -> x, c -> y, d -> z)
(eg. w.value = 3, x.value = 2, y.value = 1, z.value = 4)
因此,我期望的输出是:

[c、b、a、d]


如何使用Javascript实现这一点?任何帮助都将不胜感激。我在这个问题上纠缠了很长时间。

你可以获得索引,用
b
的值对它们进行排序,并通过获取排序后的索引映射
a
的值

var a=['a','b','c','d'],
b=[3,2,1,4],
索引=[…b.keys()]排序((x,y)=>b[x]-b[y]),
结果=index.map(i=>a[i]);

控制台日志(结果)要获得预期的结果,请使用下面的使用indexOf和sort的选项

  • 排序数组-a使用索引of对b数组值进行排序
  • var a=[“a”、“b”、“c”、“d”]
    变量b=[3,2,1,4]
    
    console.log(a.sort((x,y)=>b[a.indexOf(x)]-b[a.indexOf(y)])
    我已经用我想要的输出更新了问题。感谢您的回复。你能解释一下[…b.keys()]的意思吗?@Borg1903:生成索引数组是一个技巧
    [0,1,2,…,b.length-1]
    ;有关更多信息,请参见。b.keys()返回b的索引。b可以被认为是{1:3,2:2,3:1,4:4},所以他根据b的值对b进行排序。这导致b是{3:1,2:2,1:3,4:4}。然后,他使用a映射b值,a取数组的键
    keys
    是一个迭代器,要得到一个数组,需要将它扩展到一个数组中。非常感谢大家!明白了,谢谢。我想这比尼娜·斯科尔斯的答案执行时间要快?