Size: a a a

JavaScript — русскоговорящее сообщество

2020 January 25

ZS

Znacovean Simion in JavaScript — русскоговорящее сообщество
Ivan Granat
как по мне, ты очень непонятно описал задание
попровь меня) голова не особо варит) недосып)
источник

IG

Ivan Granat in JavaScript — русскоговорящее сообщество
и запятые надо бы поставить
источник

E

Evgen in JavaScript — русскоговорящее сообщество
Znacovean Simion
Народ
Есть задачка
const x = [1,2,3,4,5,6]

const y = [2,3,10];

Написать функцию которая бы удаляла свойства из y в x если они есть а при повторном вызове - добавляла туда если их нету
Интересно самое короткое решение на es6

function toggle_X_by_Y() {

}
сделай две разные функции - одна будет убирать, другая добавлять
источник

ZS

Znacovean Simion in JavaScript — русскоговорящее сообщество
Evgen
сделай две разные функции - одна будет убирать, другая добавлять
у меня сейчас так и сделано
я хочу оптимизировать код
источник

E

Evgen in JavaScript — русскоговорящее сообщество
Znacovean Simion
у меня сейчас так и сделано
я хочу оптимизировать код
Зачем?
источник

E

Evgen in JavaScript — русскоговорящее сообщество
Я тебе говорю - делай две функции которые делают отдельно добавление и удаление, а для тоггла еще одну которая и будет вызывать ту или другую функцию
источник

ZS

Znacovean Simion in JavaScript — русскоговорящее сообщество
Evgen
Я тебе говорю - делай две функции которые делают отдельно добавление и удаление, а для тоггла еще одну которая и будет вызывать ту или другую функцию
не вопрос
но задачку это не отменяет
покажите короткий вариант на ес6)
источник

E

Evgen in JavaScript — русскоговорящее сообщество
Znacovean Simion
не вопрос
но задачку это не отменяет
покажите короткий вариант на ес6)
воспользуйся .filter
источник

KS

Konstantin Sedykh in JavaScript — русскоговорящее сообщество
Antony
mass.forEach(function(item, index) {
   if (mass[index] === input.value) {
     console.log("повтор");
   } else {
     mass.push(input.value);
   }
 });



почему все равно добавляет в массив данные которые уже лежат там?
но ЛОГ срабатывает если повтор
никогда так не делай. ты перебираешь массив и внутри перебора добавляешь в него элементы. тут надо использовать либо find, либо some, либо на худой конец filter.
источник

KS

Konstantin Sedykh in JavaScript — русскоговорящее сообщество
Evgen
Я тебе говорю - делай две функции которые делают отдельно добавление и удаление, а для тоггла еще одну которая и будет вызывать ту или другую функцию
мне кажется достаточно одной функции: если есть пересечения - удаляем, если нет - добавляем.
источник

В

Валик in JavaScript — русскоговорящее сообщество
y.map(el => {
 const idx = x.indexOf(el);
 !!~idx ? x.splice(idx, 1) : x.push(el)
});
источник

ZS

Znacovean Simion in JavaScript — русскоговорящее сообщество
Валик
y.map(el => {
 const idx = x.indexOf(el);
 !!~idx ? x.splice(idx, 1) : x.push(el)
});
[undefined, undefined, undefined]😁
источник

V

Vlad in JavaScript — русскоговорящее сообщество
Валик
y.map(el => {
 const idx = x.indexOf(el);
 !!~idx ? x.splice(idx, 1) : x.push(el)
});
индекс вторым аргументом приходит
источник

ZS

Znacovean Simion in JavaScript — русскоговорящее сообщество
Konstantin Sedykh
мне кажется достаточно одной функции: если есть пересечения - удаляем, если нет - добавляем.
на практике у меня немного другая задача но думаю я бы справился увидь я пример нормальный на ес6)
у меня такая задача

const totalSelected = [1,2,3,4,5];
const localSelected = [1,2];
const localAvailable = [1,2,3,4];

и у меня задача написать функцию которая будет обновлять totalSelected исходя из изменений localSelected  - я логику вижу следующим образом:
1) если localSelected изменилась в сторону добавления новых значений (из localAvailable разумеется) - добавить таковые в totalSelected (проверя если их там уже нету)
2) если localSelected изменилась в сторону уменьшения - пройтись по localAvailable и удалить из totalSelected те значения которые там остались но не остались в localSelected


вот это всё бы максимально коротко написать)
источник

T

Theo in JavaScript — русскоговорящее сообщество
Второй пункт не ясен
источник

T

Theo in JavaScript — русскоговорящее сообщество
Znacovean Simion
на практике у меня немного другая задача но думаю я бы справился увидь я пример нормальный на ес6)
у меня такая задача

const totalSelected = [1,2,3,4,5];
const localSelected = [1,2];
const localAvailable = [1,2,3,4];

и у меня задача написать функцию которая будет обновлять totalSelected исходя из изменений localSelected  - я логику вижу следующим образом:
1) если localSelected изменилась в сторону добавления новых значений (из localAvailable разумеется) - добавить таковые в totalSelected (проверя если их там уже нету)
2) если localSelected изменилась в сторону уменьшения - пройтись по localAvailable и удалить из totalSelected те значения которые там остались но не остались в localSelected


вот это всё бы максимально коротко написать)
У тебя totalSelected есть 5, при выполнении приведенного тобой действия к предложенным массивам totalSelected должен стать [1, 2, 5]?
источник

T

Theo in JavaScript — русскоговорящее сообщество
И вопрос именно в изменении, то есть отлов изменения проблемой не является?
источник

ZS

Znacovean Simion in JavaScript — русскоговорящее сообщество
Theo
Второй пункт не ясен
totalSelected это общее хранилище

localSelected - частное (одно из частных)
всего в частном может быть выбрано не более чем в localAvailable и только оттуда

задача при изменениях localSelected отображать изменения в totalSelected опираясь на то чтоб в totalSelected не было лишних элементов ( присутствующих в totalSelected но отсутствующих в localSelected - но так как localSelected меняется в сторону уменьшения и мы незнаем что удалилось - надо брать diff между localSelected и localAvailable и смотреть в totalSelected если таковые там остались - удалить
)

проблемой является написание грамотного короткого продуктивного кода
источник

T

Theo in JavaScript — русскоговорящее сообщество
Ты можешь на вопрос ответить да или нет, а не простыней, к тому же сумбурно написанной?
источник

T

Theo in JavaScript — русскоговорящее сообщество
У тебя totalSelected есть 5, при выполнении приведенного тобой действия к предложенным массивам totalSelected должен стать [1, 2, 5]?
источник