shoveit
Version:
shuffle an array of elements
51 lines (46 loc) • 1.43 kB
JavaScript
function shove(arr) {
var i, j, k, x, el, ret = [], tmp = [[]];
for (i = 0;i < arr.length; i++) {
el = arr[i];
console.log(el);
for (j = 0; j < tmp.length;) {
x = false;
if (el.range) {
x = true;
for (k = el.range[0]; k < el.range[1]; k++) {
if (typeof tmp[j][k] !== 'undefined') {
x = false;
break;
}
}
} else if (el.points) {
x = true;
for (k = 0; k < el.points.length; k++) {
if (typeof tmp[j][el.points[k]] !== 'undefined') {
x = false;
break;
}
}
}
if (x) {
ret[j] = ret[j] || [];
ret[j].push(el);
if (el.points) {
for (k = 0; k < el.points.length; k++)
tmp[j][k] = 1;
} else if (el.range) {
for (k = el.range[0]; k < el.range[1]; k++)
tmp[j][k] = 1;
}
break;
} else {
j++;
if (j === tmp.length)
tmp.push([]);
continue;
}
}
}
return ret;
}
module.exports = shove;