Javascript:根据另一个数组重新排序大型多维数组

时间:2017-02-07 07:03:16

标签: javascript multidimensional-array

我有一个多维数组,其行为类似于电子表格。 第一项是列标题:

[
    ['A', 'B', 'C', 'D'],
    [ 1 ,  2 ,  3 ,  4 ],
    [ 5 ,  6 ,  7 ,  8 ],
    [...]
]

"列的顺序"由另一个数组定义:

['C', 'A', 'D', 'B']

预期结果是:

[
    ['C', 'A', 'D', 'B'],
    [ 3 ,  1 ,  4 ,  2 ],
    [ 7 ,  5 ,  8 ,  6 ],
    [...]
]

.map.splice.indexOf是最好的方法吗? 他们在20k +阵列上的表现怎么样?

谢谢!

1 个答案:

答案 0 :(得分:4)

function reorder(data, order) {
  let header = data[0];
  let orderIndex = order.map(i => header.indexOf(i));
  return data.map(row => orderIndex.map(i => row[i]));
}

let data = [
    ['A', 'B', 'C', 'D'],
    [ 1 ,  2 ,  3 ,  4 ],
    [ 5 ,  6 ,  7 ,  8 ],
];

let order = ['C', 'A', 'D', 'B'];

console.log(reorder(data, order));

至于表现......你需要测试它。