Найти совпадающие значения в N массивах Javascript

348
09 апреля 2022, 01:40

Допустим есть N массивов чисел, какие то могут быть совсем пустые, какие то длинной порядка 10-20 элементов. Как найти общие элементы для всех этих массивов?

Пример данных:

a = [ { id: 1, assetStr: 'hello'}, { id:2, assetStr: 'cat'}, ]; 
b = [ { id: 3, assetStr: 'dog'}, { id: 4, assetStr: 'hello'}, ]; 
c = [ { id: 5, assetStr: 'sun'}, { id: 6, assetStr: 'hello'}, ];

Результат на выходе:

res = [ { id: 1, assetStr: 'hello'}, ] ;
Answer 1

    a = [ { id: 1, assetStr: 'hello'}, { id:2, assetStr: 'cat'}, ]; 
    b = [ { id: 3, assetStr: 'dog'}, { id: 4, assetStr: 'hello'}, ]; 
    c = [ { id: 5, assetStr: 'sun'}, { id: 6, assetStr: 'hello'}, ]; 
 
 
 
    a.forEach(function (a) { 
        b.forEach(function (b) { 
            c.forEach(function (c) { 
                if(a.assetStr == b.assetStr && a.assetStr == c.assetStr){ 
                    console.log(a); 
                } 
            }) 
        }) 
    })

Ещё Вариант (в параметр z объединяется сколько угодно массивов):

    a = [ { id: 1, assetStr: 'hello'}, { id:2, assetStr: 'cat'}, ]; 
    b = [ { id: 3, assetStr: 'dog'}, { id: 4, assetStr: 'hello'}, ]; 
    c = [ { id: 5, assetStr: 'sun'}, { id: 6, assetStr: 'hello'}, ]; 
 
    array = []; 
    var z = array.concat(a,b,c); //Тут объединяем все массивы 
    var arr = []; 
    var res = []; 
    z.forEach(function (a1) { 
        if (arr.indexOf(a1.assetStr) != -1) { 
            res['id:'+z[arr.indexOf(a1.assetStr)].id] = a1.assetStr; 
        } else { 
            arr.push(a1.assetStr); 
        } 
    }); 
    console.log(res);

READ ALSO
Как размыть края изображения?

Как размыть края изображения?

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

173
Вывести ключ и значение массива each

Вывести ключ и значение массива each

Как в consolelog правильно вывести ключ FENOM и его значение FN338N ?

73
Подменить контент при помощи js

Подменить контент при помощи js

Всем привет, есть код html:

86