169 похожих чатов

Сейчас в fill = [ { "id": 35, "value": "text" } ] есть объект { "id": 35, "value": "нек" } но

у него другой value

и при setFill
передав новый объект...можно найти этот айди в fill и перезаписать value/?

27 ответов

22 просмотра
Tarsus- Автор вопроса

сначала было setFill(prevFill => [{"id": 35, "value":"tete"}, ...prevFill]) но так конечно не найти

map | reduce

Tarsus- Автор вопроса

я не понимаю есть такие методы, а реализация?

опиши нормально задачу, а то я не понял что надо тебе получить в итоге

Tarsus- Автор вопроса

const [fill, setFill] = useState([]) записываем туда в fill объекты setFill(prevFill => [{"id": 35, "value":"tete"}, ...prevFill]) в итоге айди дублируется с value нужно, чтобы не дублировался id и значение value у этого id перезаписывалось

юзай Set

на обьектах так не работает

ну без большего контекста могу предложить искать есть ли такой обьект, и если есть, то менять его, а если нету то добавлять

да, я написал а потом только вспомнил

Tarsus- Автор вопроса

можно подробнее плиз? я хз как это реализовать) с меня магарыч деревянными

const isExists = fill.some(({id}) => id === 35) if(isExists) { setFill(prev => prev.map(updateById)) return; } setFill(prev => [...prev, newObj])

можно в гугле почитать “js array unique” как минимум три варианта есть - проверять перед вставкой - фильтровать после вставки - перегонять в сет и обратно самый быстрый - первый

Tarsus- Автор вопроса

спасибо большое, Назар - отпишусь о результате)

Tarsus- Автор вопроса

Назар, а что за updateById?

Функция котороя обновляет обновляет только нужного юзера

Реализация на ваше усмотрение

А почему не в мап проверку на id делать?

Нам интересен порядок насколько я понял

Tarsus- Автор вопроса

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 сначала...

Tarsus- Автор вопроса

а вы можете объяснить ? я не против деревянными отблагодарить ну

Тут не el и item index, a id; в prev.map функцию кинуть, которая проверяет, что если id элемента равен id у item, то вернуть обновленный результат, иначе вернуть исходных элемент. Ну и в данном случае я б сделал через обычный if else для isExists - можно и через тернарник

else ненадо, тернарник плохой тон имхо

Если вынести в функции добавление и обновление, то нормально будет: setFill( prev => isExists ? updateItem(prev) : addItem(prev)). Можно и в объект... Ну да ладно)

Ну тут уже поинтереснее

console.log(fillInput) покажет неактуально значение, смотрите в рендере

Tarsus- Автор вопроса

спасибо вам большое) я пока туплю. 4ый месяц работы над проектом и уже крыша едет

Похожие вопросы

Обсуждают сегодня

30500 за редактор? )
Владимир
47
а через ESC-код ?
Alexey Kulakov
29
Чёт не понял, я ж правильной функцией воспользовался чтобы вывести отладочную информацию? но что-то она не ловится
notme
18
У меня есть функция где происходит это: write_bit(buffer, 1); write_bit(buffer, 0); write_bit(buffer, 1); write_bit(buffer, 1); write_bit(buffer, 1); w...
~
13
Недавно Google Project Zero нашёл багу в SQLite с помощью LLM, о чём достаточно было шумно в определённых интернетах, которые сопровождались рассказами, что скоро всех "ибешни...
Alex Sherbakov
5
Ребят в СИ можно реализовать ООП?
Николай
33
Как передать управляющий символ в открытую через CreateProcess консоль? Собсна, есть процедура: procedure TRedirectThread.WriteData(Data: OEMString); var Written: Cardinal;...
Serjone
6
в JclConsole объявлено так: function CtrlHandler(CtrlType: DWORD): BOOL; stdcall; - где ваше объявление с stdcall? у вас на картинке нет stdcall
Karagy
8
https://github.com/erlang/otp/blob/OTP-27.1/lib/kernel/src/logger_h_common.erl#L174 https://github.com/erlang/otp/blob/OTP-27.1/lib/kernel/src/logger_olp.erl#L76 15 лет назад...
Maksim Lapshin
20
~ 2m21s  nix shell github:nixos/nixpkgs#stack ~  stack ghc -- --version error: … while calling the 'derivationStrict' builtin at /builtin/derivation.nix:...
Rebuild your mind.
6
Карта сайта