2016-05-13 89 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