Tôi có thể hiện Uint8Array chứa dữ liệu nhị phân của một số tệp.
Tôi muốn gửi dữ liệu đến máy chủ, nơi nó sẽ được deserialized như byte [].
Nhưng nếu tôi gửi Uint8Array, tôi có lỗi deserialization.Chuyển đổi Uint8Array thành Mảng trong Javascript
Vì vậy, tôi muốn chuyển đổi nó thành mảng, vì mảng được deserialized tốt.
tôi làm điều đó như sau:
function uint8ArrayToArray(uint8Array) {
var array = [];
for (var i = 0; i < uint8Array.byteLength; i++) {
array[i] = uint8Array[i];
}
return array;
}
Chức năng này hoạt động tốt, nhưng nó không phải là rất hiệu quả cho các tập tin lớn.
Câu hỏi: Có cách nào hiệu quả hơn để chuyển đổi Uint8Array -> Array không?
Vâng, [] .slice hoạt động tốt, và nó là nhỏ gọn hơn. Nhưng nó có vẻ không hiệu quả hơn. Mất ~ 5 giây cho tệp 10mb. ( –
.entries() (và/hoặc .values ()) trả về đối tượng ArrayIterator, không phải mảng. –
Nitpicking tại đây, nhưng bạn chỉ cần một chút tốt hơn gọi Array.prototype.slice.call thay vì [] .slice – jordancpaul