Используйте findIndex
, чтобы увидеть, существует ли индекс с этим stationId
. Если это так, slice
оба конца массива слева и справа от этого индекса, чтобы создать новый массив без этого элемента:
addEvcToArray(id) {
const { stationIdArray } = this.state;
const index = stationIdArray.findIndex(({ stationId }) => stationId === id);
if (index === -1) {
this.setState({
stationIdArray: [...stationIdArray, { stationId: id }]
});
} else {
const slicedArr = [...stationIdArray.slice(0, index), ...stationIdArray.slice(index + 1)];
this.setState({
stationIdArray: slicedArr
});
}
}
Или, реже, используя условный оператор:
addEvcToArray(id) {
const { stationIdArray } = this.state;
const index = stationIdArray.findIndex(({ stationId }) => stationId === id);
const newStationArray = index === -1
? [...stationIdArray, { stationId: id }]
: [...stationIdArray.slice(0, index), ...stationIdArray.slice(index + 1)];
this.setState({
stationIdArray: newStationArray
});
}