@perawallet/connect
Version:
JavaScript SDK for integrating Pera Wallet to web applications.
39 lines (30 loc) • 928 B
text/typescript
/**
* Shuffle the given array
*
* @param {T[]} items Array of items to be shuffled
* @returns {T[]} shuffeled array of items
*/
function shuffleArray<T>(items: T[]) {
const newItems = items.slice();
for (let i = newItems.length - 1; i > 0; i--) {
const randomNumber = Math.floor(Math.random() * (i + 1));
[newItems[i], newItems[randomNumber]] = [newItems[randomNumber], newItems[i]];
}
return newItems;
}
/**
* ConcatArrays takes n number arrays and returns a joint Uint8Array
* @param arrs - An arbitrary number of n array-like number list arguments
* @returns [a,b]
*/
function concatArrays(...arrs: ArrayLike<number>[]) {
const size = arrs.reduce((sum, arr) => sum + arr.length, 0);
const c = new Uint8Array(size);
let offset = 0;
for (let i = 0; i < arrs.length; i++) {
c.set(arrs[i], offset);
offset += arrs[i].length;
}
return c;
}
export {shuffleArray, concatArrays};