7

I want to create a Uint8Array with 8 elements. I tried this

var myarr = new Uint8Array(255,255,255,255,40,92,143,2);

but when I run

myarr.length

I get back "255" when I expect the answer would be "8". I assume I'm doing somethign wrong in my intitialization step but don't know what that is.

satish
  • 703
  • 5
  • 23
  • 52

3 Answers3

13

The different constructors are:

new TypedArray(); // new in ES2017
new TypedArray(length);
new TypedArray(typedArray);
new TypedArray(object);

So when you do

new Uint8Array(255)

It will take it as a length. However you can pass an object (an array) instead which will be iterated to create the uint array:

new Uint8Array([255, 255, /*..*/]);
Jonas Wilms
  • 132,000
  • 20
  • 149
  • 151
3

You need to add brackets to the list inside the Uint8Array argument

let myarr = new Uint8Array([1,2,3,...])

Kyle Miller
  • 126
  • 7
0

You can initialize a UintArray with a regular array like this:

const arr = [255,255,255,255,40,92,143,2]
const uintarr = new Uint8Array(arr)
console.log(uintarr.length)
mehulmpt
  • 15,861
  • 12
  • 48
  • 88