我有一个多维数组,其行为类似于电子表格。 第一项是列标题:
[
['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 +阵列上的表现怎么样?
谢谢!
答案 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));
至于表现......你需要测试它。