philomena/assets/js/utils/array.js

34 lines
658 B
JavaScript
Raw Normal View History

2019-10-05 02:09:52 +02:00
// http://stackoverflow.com/a/5306832/1726690
function moveElement(array, from, to) {
array.splice(to, 0, array.splice(from, 1)[0]);
}
function arraysEqual(array1, array2) {
for (let i = 0; i < array1.length; ++i) {
if (array1[i] !== array2[i]) return false;
}
return true;
}
2021-10-26 05:42:29 +02:00
/**
* @template T
* @param {T[]} array
* @param {number} numBins
* @returns {T[][]}
*/
function evenlyDivide(array, numBins) {
const bins = [];
for (let i = 0; i < numBins; i++) {
bins[i] = [];
}
for (let i = 0; i < array.length; i++) {
bins[i % numBins].push(array[i]);
}
return bins;
}
export { moveElement, arraysEqual, evenlyDivide };