JSFiddle - React, Tailwind, and code Playground
JavaScript
const obj = {
'1': {
name: 'apple',
seq: 1,
id: 1,
},
'2': {
name: 'orange',
seq: 2,
id: 2,
},
'3': {
name: 'banana',
seq: 3,
id: 3,
},
}
const moveObjects = (objId, indexToMoveTo) => {
const objCopy = Object.values(obj).reduce((prev, curr) => {
// if element if the one we moved - set seq to index
if (curr.id === objId) {
prev[curr.id] = {
...curr,
seq: indexToMoveTo
};
} else if (curr.id !== objId) {
// if element is not the one and index is smaller - increase seq by one
if (curr.seq >= indexToMoveTo) {
prev[curr.id] = {
...curr,
seq: curr.seq + 1
};
}
// if index bigger than seq - return the element whithout modifing it
else if (curr.seq < indexToMoveTo) {
prev[curr.id] = {
...curr
};
}
}
return prev;
}, {})
return objCopy
}
console.log(moveObjects(3, 2))
console.log(moveObjects(3, 2))
console.log(moveObjects(1, 3))