У меня есть массив элементов с названием игр. Он отображается на странице у каждой игры есть кнопка добавление в закладки. При нажатие на кнопку игра добавляется в закладку и закладка светится черным при повторном удаляется из закладки.
<button type="button" className="btn btn-dark" onClick={e => this.updateMarker("newItem", item)}>
<FaStar />
</button>
updateMarker(key, value) {
this.state.newItem = value
// update react state
this.setState({ [key]: value });
// update localStorage
localStorage.setItem(key, value);
if(this.state.list.length === 0){
this.addMarker()
}else{
this.state.list.forEach((item) => {
if(value === item.value){
console.log('повтор удалять', item.value, value)
this.deleteMarker(value)
}else {
console.log('запись', item.value, '===', value)
this.addMarker()
}
})
}
}
addMarker = () => {
// create a new item
const newItem = {
id: 1 + Math.random(),
value: this.state.newItem.slice()
};
// copy current list of items
const list = [...this.state.list];
// add the new item to the list
list.push(newItem);
// update state with new list, reset the new item input
this.setState({
list,
newItem: ""
});
// update localStorage
localStorage.setItem("list", JSON.stringify(list));
localStorage.setItem("newItem", "");
console.log('add',localStorage)
}
deleteMarker(value) {
// copy current list of items
const list = [...this.state.list];
// filter out the item being deleted
const updatedList = list.filter(item => item.value !== value);
this.setState({ list: updatedList });
// update localStorage
localStorage.setItem("list", JSON.stringify(updatedList));
console.log('delete',localStorage)
}
Использовал функцию .forEach c условием есть есть такая игра в массиве, то удали иначе добавь. Но проблема в этом способе что он проверяет все элементы то есть 100 игр и он 99 раз вызовет запись и 1 раз вызовет удаление. Есть ли какой то другой метод перебора, или как вызвать функцию когда есть хотя бы один true на удаление, если нет то вызвать запись ?
Кофе для программистов: как напиток влияет на продуктивность кодеров?
Рекламные вывески: как привлечь внимание и увеличить продажи
Стратегії та тренди в SMM - Технології, що формують майбутнє сьогодні
Выделенный сервер, что это, для чего нужен и какие характеристики важны?
Современные решения для бизнеса: как облачные и виртуальные технологии меняют рынок
Имеются textarea и selectМне нужно по событию paste в textarea сбрасывать select