将整数坐标数组转换为类型化数组

时间:2018-04-26 12:49:55

标签: javascript

我使用像[x0, y0, x1, y1, x2, y2, ..., xN, yN]

这样存储的x,y整数坐标的大数组

为了使用更少的内存并可能提高性能,我想将这些数组存储在类型化数组中。我发现Int32Array可以存储坐标范围。

如何将这些数组转换为Int32Array,我可以执行以下操作:

var coords = [-8774772, ​​6713301, -8774922, 6712895, -8774289, 6711450, ..., -8774772, ​​6713301]
var typedArray = new Int32Array(coords);

或者我应该使用ArrayBuffer

此外,是否可以使用更少的内存进行优化,例如转换坐标以适应Int16Array

1 个答案:

答案 0 :(得分:1)

您可以使用键入的数组或数据视图,我将使用dataview:

var coords = [-8774772, 6713301, -8774922, 6712895, -8774289, 6711450, -8774772, 6713301];
var buff = new ArrayBuffer(coords.length*4);
var dv = new DataView(buff);
coords.forEach(function(d,i){
    dv.setInt32(i*4,d);
});
dv.getInt32(0); //-8774772
dv.getInt32(4); //6713301
dv.getInt32(8); //-8774922
dv.getInt32(12); //6712895

至于性能,我没有看到任何令人信服的证据表明它们比使用普通数组快得多。我甚至不知道供应商是否在幕后使用普通数组。