У меня есть массив обектов. (И новый обектов.) Я хочу один из обектов массива заменить на новый. Но надо это сделать так чтобы порядок не менялся.
Этот массив перед тем как отображаться на UI на него применяется метод reverse() , но в State этот массив не перевернутый. То есть в action новый объект приходит из перевернутим индексом я так понимаю
Я пробивал:
// вариант 1.
case SOME:
return {
...state,
array: [
...array.filter(p => p.id !== action.newObjectIndex), action.newObject
]
};
// вариант 2.
case SOME:
return {
...state,
array: [
...array.splice(0, array.indexOf(action.object)),
action.newObject,
...array.splice(array.indexOf(action.object) + 1)
]
};
// вариант 3.
case SOME:
const newArray = array.reverse();
const prev = newArray.slice(0, newArray.indexOf(action.object));
const next = newArray.slice(newArray.indexOf(action.object) + 1);
return {
...state,
posts: [
...prev,
action.newObject,
...next
]
};
// вариант 4.
case SOME:
const oldArray = array.reverse();
oldArray.map((p, index) => {
if(index !== oldArray.indexOf(action.object)) {
return p
}
return {
...p,
...action.newObject
}
})
return {
...state,
array: [
...array
]
};