简体   繁体   中英

How to get an array of strings based on Uint8Array values (map Uint8 values to String/s)

new Uint8Array([1,2,3]).map((v,y)=>"0"+v+"0"+y)
> Uint8Array(3) [ 100, 201, 46 ] // actual
> ["0100","0201","0302"] // expected

new Uint8Array([1,2,3]).map((v,y)=>v+1)
> Uint8Array(3) [ 2, 3, 4 ] // actual as expected

[1, 2, 3].map(x => "0"+x);
> Array ["01", "02", "03"]  // actual as expected

Since 302 is bigger than 256 (Uint8 max size), when converted we get 302%256 which is 46 . Put this in as a proof we don't get just any number type, but specifically Uint8.

So how do I get an array of strings based on Uint8Array values?

the problem here is that Uint8Array.map returns an Uint8Array object you need to convert it in a normal array in order to achieve the result you are looking for

 const uint8Array = new Uint8Array([1,2,3]) const res1 = uint8Array.map((v,y)=>"0"+v+"0"+y) const res2 = [...uint8Array].map((v,y)=>"0"+v+"0"+y) console.log(res1, res2)

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM