у него другой value
и при setFill
передав новый объект...можно найти этот айди в fill и перезаписать value/?
сначала было setFill(prevFill => [{"id": 35, "value":"tete"}, ...prevFill]) но так конечно не найти
map | reduce
я не понимаю есть такие методы, а реализация?
опиши нормально задачу, а то я не понял что надо тебе получить в итоге
const [fill, setFill] = useState([]) записываем туда в fill объекты setFill(prevFill => [{"id": 35, "value":"tete"}, ...prevFill]) в итоге айди дублируется с value нужно, чтобы не дублировался id и значение value у этого id перезаписывалось
юзай Set
на обьектах так не работает
ну без большего контекста могу предложить искать есть ли такой обьект, и если есть, то менять его, а если нету то добавлять
да, я написал а потом только вспомнил
можно подробнее плиз? я хз как это реализовать) с меня магарыч деревянными
const isExists = fill.some(({id}) => id === 35) if(isExists) { setFill(prev => prev.map(updateById)) return; } setFill(prev => [...prev, newObj])
можно в гугле почитать “js array unique” как минимум три варианта есть - проверять перед вставкой - фильтровать после вставки - перегонять в сет и обратно самый быстрый - первый
спасибо большое, Назар - отпишусь о результате)
Назар, а что за updateById?
Функция котороя обновляет обновляет только нужного юзера
Реализация на ваше усмотрение
А почему не в мап проверку на id делать?
Нам интересен порядок насколько я понял
function add(item) { const isExists = fillInput.some((el) => el.index === item.index) if (isExists) { console.log(isExists) setFillInput(prev => prev.map(el => el.value = item.value)) console.log(fillInput) return; } setFillInput(prev => [...prev, item]) }
Учите js сначала...
а вы можете объяснить ? я не против деревянными отблагодарить ну
Тут не el и item index, a id; в prev.map функцию кинуть, которая проверяет, что если id элемента равен id у item, то вернуть обновленный результат, иначе вернуть исходных элемент. Ну и в данном случае я б сделал через обычный if else для isExists - можно и через тернарник
else ненадо, тернарник плохой тон имхо
Если вынести в функции добавление и обновление, то нормально будет: setFill( prev => isExists ? updateItem(prev) : addItem(prev)). Можно и в объект... Ну да ладно)
Ну тут уже поинтереснее
console.log(fillInput) покажет неактуально значение, смотрите в рендере
спасибо вам большое) я пока туплю. 4ый месяц работы над проектом и уже крыша едет
Обсуждают сегодня