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);