在 Javascript 中将对象转换为缓冲区

Converting an object to a buffer in Javascript

我没有使用节点,只是在浏览器中 Javascript

我需要高效地向网络工作者发送数据。我已经设法弄清楚如何从数组创建缓冲区:

// assume it contains integers
var numbers = new Int8Array(10); 

// works
const data = {buffer: numbers.buffer};
worker.postMessage(data, [data.buffer]);

但假设我有一个如下所示的对象:

var myObject = {'in': [0.123,-0,521], 'out' : [1.409]};

我如何将其转换为缓冲区?我发现了许多类似的问题,但他们似乎使用了 Node,我没有使用它。

您可以像这样创建类型化数组:

[obj1.in1,obj1.in2,obj1.out,obj2.in1,...]

有一个对象:

var arr=Int8Array.from(myObject.in.concat(myObject.out));

对象数组:

var ObjArr=[obj1,obj2];
var arr=new Int8Array(ObjArr.length*3);

for(var i=0;i<ObjArr.length;i++){
  var obj=ObjArr[i];
  arr.set(obj.in.concat(obj.out),i*3);
}

要遍历,您可以使用简单的 for 循环:

for(var i=0;i<arr.length-2;i+=3){
 var in1=arr[i],in2=arr[i+1],out=arr[i+2];
 ...
}