在 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];
...
}
我没有使用节点,只是在浏览器中 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];
...
}