JSFiddle - React, Tailwind, and code Playground
by tanvir_alam_shawn
JavaScript
function update(array, index, value) {
let delta = array[index].value - value,
increment = Math.sign(delta);
array[index].value = value;
while (delta) {
var expressionIndexToUpdate = findPointer(array);
var expressionToUpdate = array[expressionIndexToUpdate];
console.log(expressionToUpdate, increment)
if (increment > 0) {
expressionIndexToUpdate = expressionToUpdate.prev;
expressionToUpdate = array[expressionIndexToUpdate];
}
console.log(expressionToUpdate)
if (expressionIndexToUpdate === index) {
if (increment < 0) {
expressionIndexToUpdate = expressionToUpdate.next;
} else {
expressionIndexToUpdate = expressionToUpdate.prev;
}
expressionToUpdate = array[expressionIndexToUpdate];
}
console.log(expressionToUpdate)
expressionToUpdate.value += increment;
clearPointers(array);
if (increment < 0) {
array[expressionToUpdate.next].pointer = true
} else {
expressionToUpdate.pointer = true
}
delta = delta - increment;
}
}
function findPointer(collections) {
for (var i=0; i <= collections.length; i++) {
if (collections[i].pointer) {
return i;
}
}
}
function clearPointers(collections) {
collections.forEach(function (exp) {
exp.pointer = false;
})
}
var collections = [
{ value: 20, next: "1", prev: "4", lastUpdated: false, isLoaked: false, pointer: true },
{ value: 20, next: "2", prev: "0", lastUpdated: false, isLoaked: false, pointer: false },
{ value: 20, next: "3", prev: "1", lastUpdated: false, isLoaked: false, pointer: false },
{ value: 20, next: "4", prev: "2", lastUpdated: false, isLoaked: false, pointer: false },
{ value: 20, next: "0", prev: "3", lastUpdated: false, isLoaked: false, pointer: false }
];
update(collections, 2, 25);
console.log(collections,...