JSFiddle - React, Tailwind, and code Playground
by tanvir_alam_shawn
JavaScript
function update(array, index, value) {
function go(index, direction) {
do {
array[index].value += increment;
if (!(delta -= increment)) return;
index = array[index][direction];
} while (!array[index].pointer)
}
let delta = array[index].value - value,
increment = Math.sign(delta);
array[index].value = value;
array[index].pointer = true;
while (delta) {
go(array[index].prev, 'prev');
if (!delta) break;
go(array[index].next, 'next');
}
array[index].pointer = false;
}
/*var collections = [
{ value: 34, next: "1", prev: "2", lastUpdated: false, isLoaked: false, pointer: false },
{ value: 33, next: "2", prev: "0", lastUpdated: false, isLoaked: true, pointer: false },
{ value: 33, next: "0", prev: "1", lastUpdated: false, isLoaked: false, pointer: false }
];*/
var collections = [
{ value: 100, next: "1", prev: "1", lastUpdated: false, isLoaked: false, pointer: false },
{ value: 0, next: "0", prev: "0", lastUpdated: false, isLoaked: true, pointer: false }
];
update(collections, 0, 98);
console.log(...collections.map(({ value }) => value));