js-根据有序数组对数组中的元素进行排序

时间:2018-07-08 14:24:29

标签: javascript arrays sorting

我有一个有序数组,另一个数组内有4个数组。我想根据已排序的数组来排序每个数组。

(这只是一个例子,我需要一个可以与数组内任何类型的元素一起工作的代码)。

let ordered_array = ['a','b','c','d','e','f','g','h','i','j','k','l'];
  let array = [['d','c','a'],['i','k','b'],['f','e','h'],['l','g','j']];
  //order each array in 'array'
  for(let i = 0; i < array.length; i++){
    for(let l = 0; l < array[i].length; l++){
      document.write(array[i][l]);
    }
    document.write('</br>');
  }
  /*
  expected output (after order):
  acd 
  bik
  efh
  gjl
  */

1 个答案:

答案 0 :(得分:0)

您可以输入Map并按索引排序。

var ordered_array = ['a', 'b', 'c', 'd', 'e', 'f', 'g', 'h', 'i', 'j', 'k', 'l'],
    array = [['d', 'c', 'a'], ['i', 'k', 'b'], ['f', 'e', 'h'], ['l', 'g', 'j']],
    order = ordered_array.reduce((m, v, i) => m.set(v, i), new Map);
    
array.forEach(t => t.sort((a, b) => order.get(a) - order.get(b)));

console.log(array);
.as-console-wrapper { max-height: 100% !important; top: 0; }