- это два стейта. в dirline = [ {key,value},{key,value},{key,value}] , dirline2 - [ ] (пустой массив) . Задача : удалять из dirline значения(объекты) по key , и перемещать их в dirline2 . Вроде все просто, но додуматься не могу. Реализовал только удаление (код выше) .
А ты по клику их улаляешь?что есть у тебя триггер чтобы удалить нужный елемент?
Я хз, что тут тяжёлого. Мапить массив в поиске ключа, потом по индексу splice (Если не путаю). Это возвращает удалённый элемент, который пушив по второй массив
а как будет удаляться из первого? и если ключей несколько(или индексов, как вы говорите)
Так примитивный метод js сам удаляет и возвращает удалённый элемент. Есть ключи (Это key внутри объекта), а есть перечислительный индекс массива, который является вторым аргументом в методе .map((elem, index)=>(elem.name))
Если ключей несколько, то можно просто маппить массив, пока не закончатся ключи
изи
всем изи но никто не может код конкретный написать))
код писать чтоб ты просто скопипастил?
Так напиши если ничего сложного
Оаздели задачу на этапы, удаление ты сделал.Научись вставлять отдельно. Потом переносить из одного в другой.
Ну так ты по этой функции находи кликнутый лемент типо copyTargetEL = {...arr.find(el=el.id)} а потом с dirline фильтром удаляй а в этот dirline2 ложи copyTargetEL
ааааааааааа ну блин ну что за 😩 вот куча строк , неужели вам вместо них было тяжело написать код, ведь даны конкретные условия...
Мы не на собеседовании, у всех своя работа, свои дела и на регрессивную психологию не попадусь)
const dirline = [ {key: 1, value: 1}, {key: 2, value: 2}, {key: 3, value: 3}, {key: 4, value: 4}, ] const dirline2 = [ {key: 5, value: 5}, ]; const key = 2; //данный код мутирует исходные массивы const moveFn = (key, dirline, dirline2) => { let idx = -1; const value = dirline.filter((item, index) => { if (item.key === key) { idx = index; return true } }); console.log(idx); if (idx >= 0) { dirline.splice(idx, 1); dirline2.push(value); } } moveFn(key, dirline, dirline2); console.log(dirline, dirline2);
чета много кода, он две строчки хотел
const moveFn = (key: any, dirline: any, dirline2: any) => { let idx = -1; // eslint-disable-next-line array-callback-return,consistent-return const value = dirline.filter((item: any, index: any) => { if (item.key === key) { idx = index; return true; } }); console.log(idx); if (idx >= 0) { dirline.splice(idx, 1); dirline2.push(value); } }; что делаю не так? не работает пока (
Обсуждают сегодня