根据另一个数组的值对数组进行排序

And*_*rdu 1 javascript arrays sorting

我该如何排序这个数组:

var list = [
    'forms/buttons',
    'forms/fields',
    'layout/common',
    'layout/sidebar',
    'media/captions',
    'media/galleries',
    'typography/headings',
];
Run Code Online (Sandbox Code Playgroud)

基于此顺序(斜杠前的部分):

var needed_order = [
    'typography',
    'forms',
    'media',
    'layout',
];
Run Code Online (Sandbox Code Playgroud)

预期结果:

// [
//     'typography/headings',
//     'forms/buttons',
//     'forms/fields',
//     'media/captions',
//     'media/galleries',
//     'layout/common',
//     'layout/sidebar',
// ]
Run Code Online (Sandbox Code Playgroud)

Shr*_*han 5

这应该有所帮助

Array.prototype.sort以一个compareFunction参数来决定排序顺序.阅读更多

如果compareFunction提供,则根据compare函数的返回值对所有非未定义的数组元素进行排序(所有未定义的元素都排序到数组的末尾,没有调用compareFunction)

var list = [
  'forms/buttons',
  'forms/fields',
  'layout/common',
  'layout/sidebar',
  'media/captions',
  'media/galleries',
  'typography/headings',
];

var needed_order = [
  'typography',
  'forms',
  'media',
  'layout',
];

list.sort((a, b) => needed_order.indexOf(a.split('/')[0]) - needed_order.indexOf(b.split('/')[0]));

console.log(list);
Run Code Online (Sandbox Code Playgroud)