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

Допустим есть 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'}, ] ;

Ответы (1 шт):

Автор решения: Denis640Kb

    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);

→ Ссылка