javascript 多维类型数组 (Int8Array) 示例
javascript multidimensional Typed array (Int8Array) example
我尝试使用类型化数组而不是数组来减少内存:
function createarrayInt8(numrows,numcols,number){
var arr = new Int8Array(numrows);
for (var i = 0; i < numrows; ++i){
var columns = new Int8Array(numcols);
for (var j = 0; j < numcols; ++j){
columns[j] = number;
}
arr[i] = columns;
}
return arr;
}
但我无法创建多维类型化数组。
为什么?
我是否必须仅将 "number" var 转换为 Int8?
类型化的 Int8Array
只能容纳 8 位整数。因此 arr[i] = columns
将不起作用,因为列的类型 Int8Array
无法转换为并存储(以任何有意义的方式)为 8 位整数。
解决方案:将 arr
设为通用 Array
,其元素可以是数组,或者 - 可能是更高级但通常性能更高的解决方案 - 将多维数组存储为大小为 numrows * numcols
并通过 arr[column + row * numcols]
访问一个元素:
var numrows = 5, numcols = 4;
var arr = new Int8Array(numrows * numcols).fill(0);
arr[3 + 1 * numrows] = 1; // col = 3, row = 1
console.log (arr);
我尝试使用类型化数组而不是数组来减少内存:
function createarrayInt8(numrows,numcols,number){
var arr = new Int8Array(numrows);
for (var i = 0; i < numrows; ++i){
var columns = new Int8Array(numcols);
for (var j = 0; j < numcols; ++j){
columns[j] = number;
}
arr[i] = columns;
}
return arr;
}
但我无法创建多维类型化数组。 为什么? 我是否必须仅将 "number" var 转换为 Int8?
类型化的 Int8Array
只能容纳 8 位整数。因此 arr[i] = columns
将不起作用,因为列的类型 Int8Array
无法转换为并存储(以任何有意义的方式)为 8 位整数。
解决方案:将 arr
设为通用 Array
,其元素可以是数组,或者 - 可能是更高级但通常性能更高的解决方案 - 将多维数组存储为大小为 numrows * numcols
并通过 arr[column + row * numcols]
访问一个元素:
var numrows = 5, numcols = 4;
var arr = new Int8Array(numrows * numcols).fill(0);
arr[3 + 1 * numrows] = 1; // col = 3, row = 1
console.log (arr);