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

Всем привет, у меня есть такая конструкция [ [obj1, obj2],

[obj3, obj2], [obj2, obj4], [obj5, obj2, obj8] ]
мне нужно взять из этого массива эелементы, которые есть во всех вложенных массивах, то есть в примере должен остаться только obj2
как такое можно сделать? какой метод юзать?

13 ответов

13 просмотров

можно так const arr = [[1, 2], [3, 2], [2, 4], [5, 2, 8]]; arr.flat().reduce((acc, item) => { if (!acc[0].has(item)) { acc[0].add(item); } else { acc[1] = item; } return acc }, [new Set()])[1]

const inAllArrays = (arrays) => { const arraysCount = arrays.length; const occurencies = arrays.reduce((occurencies, array) => { array.forEach((element) => occurencies.set(element, occurencies.get(element) ?? 0 + 1) ); return occurencies; }, new Map()); return [...occurencies.keys()].filter( (element) => occurencies.get(element) === arraysCount ); }; мб, типа того, не проверял

i7 4n
const inAllArrays = (arrays) => { const arraysCo...

вот это хороший вариант

🏴‍☠️
можно так const arr = [[1, 2], [3, 2], [2, 4], [5...

или так понятнее const arr = [[1, 2], [3, 2], [2, 4], [5, 2, 8]]; const findRepeatInSubArr = arr => { const uniq = new Set(); return arr.flat().find(item => { if(!uniq.has(item)) { uniq.add(item); } else { uniq.clear(); return item; } }) }

krike- Автор вопроса
i7 4n
const inAllArrays = (arrays) => { const arraysCo...

спасибо, надеюсь сработает (хотя мне по хорошему все общие элементы во всех массивах взять)

krike
спасибо, надеюсь сработает (хотя мне по хорошему в...

так там и будет массив с элементами, которые есть во всех массивах

krike
спасибо, надеюсь сработает (хотя мне по хорошему в...

аа, тогда мое решение вернет только obj2, т.к. он во всех повторяется

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

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

ну тогда проканает. иначе для простоты можно Set ещё на массив сначала кинуть, но мне в таком случае не нравится нарастающая сложость

krike- Автор вопроса
i7 4n
ну тогда проканает. иначе для простоты можно Set е...

если честно пишу говнокод, я пишу фильтр по условия AND как в exel, у меня много элементов, примерно пару тысяч, и при выборе 4х условий фильтр начинает работать по 5 секунд ожидания

krike
нет, такого быть не должно, у меня проверка при до...

const inAllArrays = (arrays) => { const arraysCount = arrays.length; const occurencies = arrays.reduce((occurencies, array) => { array.forEach((element) => occurencies.set( element, (occurencies.get(element) ?? new Set()).add(array) ) ); return occurencies; }, new Map()); return [...occurencies.keys()].filter( (element) => occurencies.get(element).size === arraysCount ); }; вот так, вроде как, должно быть ок, по-прежнему не проверял)

Есть еще такой вариант: const arr = [[1, 2], [3, 2], [2, 4], [5, 2, 8]]; const uniq = new Set(arr.flat()); const result = []; for (const value of uniq) { const avaliableInAll = arr.map(x => x.includes(value)); if (avaliableInAll.every(x => x)) result.push(value); }

i7 4n
const inAllArrays = (arrays) => { const arraysCo...

const inAllArrays = (arrays) => { const elementsWithoutDuplicates = [...new Set(arrays.flat())]; const sets = arrays.map((array) => new Set(array)); return elementsWithoutDuplicates.filter((element) => sets.every((set) => set.has(element)) ); }; или ещё так, но надо чекать всё по производительности и т. п.

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

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

@MrMiscipitlick А можешь макрос написать, который будет вычислять смещение относительно переданных меток? Просто .label1-.label2, и вернуть значение.
КТ315
35
я не магистр хаскеля, но разве не может лейзи тип конвертнуться в не-лейзи запросив вычисление содержимого прям при инициализации?
deadgnom32 λ madao
100
А еще в перле можно уже @arr1 + @arr2?
Sergei Zhmylove
53
Подобного рода ;Следующие три строки это директивы ассемблера, ;которые можно не задавать, т.к.работаем в Visual Studio. ;Символ ";" - это начало однострочного комментария ...
Егор Анелькин
3
Привет всем. появился вопрос. Разрабатываю сайт, в данный момент он запущен. Хостинг beget. Добавляю на сайт яндекс метрику с помощью полей client-settings (взято отсюда http...
Andrew
2
Подскажите, где смотреть результат выполнения программы? Код: ;.686 ;Система команд процессора 686 ;.MODEL FLAT,stdcall ;Модель памяти плоская, станда...
Егор Анелькин
5
еще вопрос, допустим мы создадим char массив из 10 элементов и присвоим ему через сканф 10 символов. и выведем все символы. Хотел спросить последний элемент /0 будет включать...
Anthem
11
открыть папку в проводнике: 1 - ShellExecute 2 - ExecuteProcess 3 - OpenDocument что лучше выбрать?
Alexey Kulakov
12
Где в Астане можно купить мясо для шашлыков?
Dancing Іңұқәһүғө
21
;.686 ;Система команд процессора 686 ;.MODEL FLAT,stdcall ;Модель памяти плоская, стандартный ;вызов процедуры ;option casemap:no...
Егор Анелькин
1
Карта сайта