JSFiddle - React, Tailwind, and code Playground
by Daedalus
HTML
<script src="https://cdn.jsdelivr.net/npm/[email protected]/lodash.min.js"></script>
<pre><code id="logs"></code></pre>
JavaScript
let typeArr = [{
type: 'two',
name: 'test1',
priority: 5
}, {
type: 'one',
name: 'test2',
priority: 10
}, {
type: 'two',
name: 'test3',
priority: 55
}, {
type: 'one',
name: 'test4',
priority: 15
}, {
type: 'one',
name: 'test5',
priority: 4
}];
typeArr.sort((a, b) => b.priority - a.priority);
console.clear();
/*document.getElementById('logs').innerHTML = JSON.stringify(typeArr.map(type => {
return {
name: type.name,
type: type.type,
priority: type.priority
};
}), null, 2) + "\n";*/
function iterator(arr) {
var index = 0,
len = arr.length;
return {
adjustLen() {
if (len < arr.length) {
len += arr.length - len;
} else if (len > arr.length) {
len -= len - arr.length;
} else {}
},
getIndex() {
return {
index: index,
value: arr[index],
fromTop: index === 0
};
},
advanceIndex() {
let fromTop = false;
let next = arr[index++];
this.adjustLen();
if (typeof next === 'undefined') {
index = 0;
fromTop = true;
next = arr[index];
}
return {
index: index,
value: next,
fromTop
};
}
};
}
class someClass {
constructor() {
this._iterator = iterator(typeArr);
this.getIndex = this._iterator.getIndex.bind(this._iterator);
this.advanceIndex = this._iterator.advanceIndex.bind(this._iterator);
}
}
var tester = new someClass();
function next(type, size) {
document.getElementById('logs').innerHTML += type + "\n";
let nextObjs = [];
let sizeObj = {
size
};
let typeObj = {
type
};
getNextValidType(nextObjs, typeObj, sizeObj);
//console.log(nextObjs);
if (nextObjs[0].fromTop) {
document.getElementById('logs').innerHTML += '----------------------- From the top!' + "\n";
}
nextObjs.forEach((nextObj, i) => {
document.getElementById('logs').innerHTML += JSON.stringify(nextObj.value) + "\n";
...