2016-05-13 58 views
0

概括地說,我想要做的是使用順序一個陣列的追隨其他順序...排序數組值匹配另一個陣列ES6

例如...... (使用ES6反應)

const orderArr = ["Daniel","Lucas","Gwen","Henry","Jasper"]; 
const nameArr = ["Gwen","Jasper","Daniel"]; 

返回

Daniel // first 
Gwen // second 
Jasper // third 

因此新的陣列看起來像const newNameArr = ["Daniel","Gwen","Jasper"]; //下面的順序

orderArr是我想要遵循的有序數組。所以如果有其他陣列出現(nameArr),他們應該遵循orderArr的順序。

這甚至可能嗎?

回答

2

其中一種方法是將filter中未出現在兩個陣列中的方法用orderArr作爲基準。這可確保它們以與orderArr中顯示的順序相同的順序顯示。

const orderArr = ["Daniel","Lucas","Gwen","Henry","Jasper"]; 
 
const nameArr = ["Gwen","Jasper","Daniel"]; 
 
const newNameArr = orderArr.filter((x) => nameArr.indexOf(x) > -1); 
 
document.write('<pre>' + JSON.stringify(newNameArr, null, 2) + '</pre>');

+0

嗯,不正是希望過濾掉任何東西,兩個陣列將最有可能包含像任何價值「的學生,商用,bikeathon,讀」的訂單價值....我m更關心陣列訂單的位置 – Modelesq

+0

@Modelesq正好。這不會更改任何數組的內容。它創建一個新的數組,其中包含'nameArr'的內容,但順序是它們出現在'orderArr'中。 –

+0

太棒了!不幸的是,它爲我扔了一個空陣列。可能是我的目的 – Modelesq

相關問題