javascript:切换多维数组中每个元素的元素

时间:2014-08-03 16:44:53

标签: javascript arrays performance multidimensional-array

我有一个包含坐标对列表的多维数字数组:

var coordinates = [
[
    16.383223226146004,
    48.21122334186088
],
[
    16.384753966103307,
    48.211128793925674
],
[
    16.384923422642906,
    48.211127770652936
],
[
    16.38575514277135,
    48.21122830416087
]...

为数组中的所有条目切换坐标对的性能最高的选项是什么。坐标列表可能很长,因此我正在寻找快速工作的解决方案。

预期结果:

coordinates = [
[
    48.21122334186088,
    16.383223226146004
],
[
    48.211128793925674,
    16.384753966103307
],
[
    48.211127770652936
    16.384923422642906,
],
[
    48.21122830416087,
    16.38575514277135
]...

2 个答案:

答案 0 :(得分:3)

使用Array reverse功能

coordinates.forEach(function (coordinate) {
    coordinate.reverse();
})

答案 1 :(得分:2)

  

为数组中的所有条目切换坐标对的最佳性能是什么!

一般来说,最快的通常是最简单的常规循环,只需设置数组索引

for (var i=coordinates.length; i--;) {
    var temp = coordinates[i][0];
    coordinates[i][0] = coordinates[i][1];
    coordinates[i][1] = temp;
}

这是一个测试不同方法的JSPerf

http://jsperf.com/switch-elements

forEachreverse

快约95%

jsperf

这是一个巨大的差异,而这段代码更改了数组中的索引,其中1000个数组几乎 500k次 ,代码使用forEach和{{1只执行17k次。