diff options
author | (quasar) nebula <qznebula@protonmail.com> | 2024-05-16 22:41:33 -0300 |
---|---|---|
committer | (quasar) nebula <qznebula@protonmail.com> | 2024-05-16 22:41:33 -0300 |
commit | cd91ccbea9e76ee1de1e3cbcfe17d8a2cb6ef9b4 (patch) | |
tree | d98e0b2a100170c7f913da57fb8e010c4b581603 /general-util.js | |
parent | 2a270f20cc8e2f2a0754d28d6892bb1bd27e45ce (diff) | |
parent | eb6a997df675fc8176fb15f34450a0c1b8416edc (diff) |
Merge branch 'main' into merge-socket-mtui merge-socket-mtui
So we made this merge commit *after* going through a whole fidanglin' bunch of steps to flat-out rebase socket-mtui... but of course, that was pretty hopeless from the start to get just quite right. After all, we didn't know the exact point of each commit and how to test out the changes, so we couldn't make sure all our rebased commits were working the same way. (This is maybe the single coolest reason to make sure that automated tests *pass with 100% coverage at every commit*, but obviously this project doesn't have that. Alas!) This merge commit follows up a different merge commit we actually made almost exactly one year ago to this day (also: our birthday LOL). We figure the testing done at that point was quite a bit more thorough than we'd do today, and anyway there's little reason to repeat the work we did in that commit. Comparatively, this merge commit is way smaller! It was still fun to go through the whole rebasing process, even if it didn't practically bring us anywhere. You know, assuming the merge commit from last year didn't accidentally destroy any code or todos lol........ *prays* ^____^
Diffstat (limited to 'general-util.js')
-rw-r--r-- | general-util.js | 12 |
1 files changed, 9 insertions, 3 deletions
diff --git a/general-util.js b/general-util.js index d369848..78843f9 100644 --- a/general-util.js +++ b/general-util.js @@ -78,7 +78,7 @@ export function downloadPlaylistFromOptionValue(arg) { } } -export function shuffleArray(array) { +export function shuffleArray(array, limit = array.length) { // Shuffles the items in an array. Returns a new array (does not modify the // passed array). Super-interesting post on how this algorithm works: // https://bost.ocks.org/mike/shuffle/ @@ -86,10 +86,12 @@ export function shuffleArray(array) { const workingArray = array.slice(0) let m = array.length + let n = limit - while (m) { + while (n) { let i = Math.floor(Math.random() * m) m-- + n-- // Stupid lol; avoids the need of a temporary variable! Object.assign(workingArray, { @@ -98,7 +100,11 @@ export function shuffleArray(array) { }) } - return workingArray + if (limit === array.length) { + return workingArray + } else { + return workingArray.slice(0, limit) + } } export function throttlePromise(maximumAtOneTime = 10) { |