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

时间:2017-06-29 11:59:05

标签: javascript buffer web-worker

我没有使用节点,只是在浏览器中使用简单的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 ,我没有使用它。

1 个答案:

答案 0 :(得分:1)

你可以像这样创建一个类型化的数组:

[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];
 ...
}