Tôi đang làm việc với các đối tượng ArrayBuffer
và tôi muốn sao chép chúng. Trong khi điều này là khá dễ dàng với con trỏ thực tế và memcpy
, tôi không thể tìm thấy bất kỳ cách đơn giản để làm điều đó trong Javascript.Cách đơn giản nhất để sao chép đối tượng ArrayBuffer là gì?
Ngay bây giờ, đây là cách tôi sao chép của tôi ArrayBuffers
:
function copy(buffer)
{
var bytes = new Uint8Array(buffer);
var output = new ArrayBuffer(buffer.byteLength);
var outputBytes = new Uint8Array(output);
for (var i = 0; i < bytes.length; i++)
outputBytes[i] = bytes[i];
return output;
}
Có cách nào đẹp hơn?
Trong Chrome (29 tại thời điểm nhận xét này), ArrayBuffer không có phương thức có tên là .slice, nhưng .subarray (bắt đầu [, kết thúc]) thay thế. Không chắc chắn nó như thế nào trong FF. –
Có vẻ như thông số đã thay đổi kể từ khi câu trả lời của tôi được đặt ra. Tôi sẽ làm việc để cập nhật nó. 'subarray()' nằm trong tiêu chuẩn mới thay cho 'slice()'. – chuckj
Nhìn lại spec, 'ArrayBuffer' phải có' slice() '. Các mảng được đánh máy (chẳng hạn như 'Uint8Array') phải có' subarray() '. Ở trên là chính xác cho 'ArrayBuffer'. – chuckj