Внутри редуктора я вызываю метод reoder. Внутри метода я пытаюсь переставить элемент и переместить элемент с startIndex в endIndex.
Однако, когда я ставлю отладчик, всякий раз, когда он достигает строки с
const [removed] = ...
Он возвращается к вызову функции и несколько раз вызывает / отображает функцию повторной загрузки. После этого tempArray пуст, хотя массив карт никогда не бывает пустым.
Если я удалю эту строку, tempArray не будет пустым и будет таким же, как массив карт. Однако в этой строке tempArray всегда пуст.
Также,
const reoder = (cards, startIndex, endIndex) => {
debugger
const tempArray = Array.from(cards)
const [removed] = tempArray.splice(startIndex)
console.info(tempArray)
}
Вот мой массив карт.
mainPlayerCards: [
{
id: 0,
value: "A"
},
{
id: 1,
value: "B"
},
{
id: 2,
value: "C"
}
],
Любая помощь будет оценена. Я не совсем уверен, что там происходит.
Спасибо
Когда splice вызывается как arr.splice(0), он очищает массив arr. Вы можете прочитать документацию на splice. Это не имеет ничего общего с тем, что вы пишете в заголовке вопроса. Вы намеревались написать .splice(startIndex, 1) ... со вторым аргументом? А может .splice(startIndex, endIndex-startIndex)?



![Безумие обратных вызовов в javascript [JS]](https://i.imgur.com/WsjO6zJb.png)


Вы должны передать 1 (количество элементов для удаления) в качестве второго аргумента вызова tempArray.splice(startIndex):
const reoder = (cards, startIndex, endIndex) => {
const tempArray = Array.from(cards)
const [removed] = tempArray.splice(startIndex, 1)
tempArray.splice(endIndex, 0, removed);
console.info(tempArray);
return tempArray;
};
reoder([
{
id: 0,
value: "A"
},
{
id: 1,
value: "B"
},
{
id: 2,
value: "C"
}
], 0,1);Вау, мне следовало читать документацию более четко! Спасибо!
Можете показать, как вы это делаете на редукторе?