【JS】【ES6】兩個數組值一一對應,對數組A排序,然後根據數組A排序後的結果對數組B排序

手裏有兩個數組a和b,它們在數據結構上沒有關聯,但在業務邏輯上,兩個數組中同索引的兩個元素是有關聯的,要求一一對應。

由於某些原因,我必須要把數組a排序,並且如果數組a中元素的位置變了,b中相對應的元素位置也得跟着變。

糾結半天,總算用較爲簡單的方式做出來了:

初始狀態,兩個數組:

a=[33,22,11]
b=['c','b','a']

首先,將a和b中的同索引元素組合在一起,兩兩捏合,形成一個新的數組:

> c=a.map((e,i)=>{return [e,b[i]]})
[ [ 33, 'c' ], [ 22, 'b' ], [ 11, 'a' ] ]

然後,將c按照每一個元素中的第一個元素 (其實就是b中的元素)進行排序:

> c.sort((x,y)=>{
...  if(x[0]>y[0]){return 1;}else{return -1}
... })
[ [ 11, 'a' ], [ 22, 'b' ], [ 33, 'c' ] ]

然後,分別使用map取出c中每個元素的第一/第二個元素,組成兩個數組,也就是排序之後的a和b啦。

整體結果:

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章