我将两个数组输入到Highcharts的“ series”参数中,例如:

A = [25, 100, 50, 12]
B = [50, 12, 100, 25]


A和B的顺序对应于图表的Y值,因此,如果我按升序对A进行排序,那么B的顺序就必须与A匹配,方法是:

A = [12, 25, 50, 100]
B = [25, 50, 100, 12]


幼稚的方法只是实现一个基本的排序算法,该算法采用2个数组,对于排序A的每个步骤,它都会在B上执行相同的步骤,而忽略其内容。但这感觉有点愚蠢-我认为实现一个将这两个数组中的值相关联的数据结构,然后允许我对其中一个参数执行排序似乎更为明智。

唯一需要注意的是,我需要一个对象/数据结构,然后可以从中提取这两个数组以将其插入到highcharts中。另外,我记得读过JS规范并没有说普通的JS对象需要维护顺序,所以我不确定哪种方法是好的。

最佳答案

您可以创建一个包含排序顺序索引的常规排序数组。然后,您可以将其映射到您喜欢的任何数组:



let A = [25, 100, 50, 12]
let B = [50, 12, 100, 25]

// sort order based on A will have the indexes in order of A's sort
let sort_order = Array.from(A, (_, i) => i).sort((a,b) => A[a] - A[b])

let A_sorted  = sort_order.map(i => A[i])
let B_sorted  = sort_order.map(i => B[i])

console.log(A_sorted, B_sorted)

10-02 19:50