Я знаю этот вопрос, простейший код для пересечения массива, но все решения предполагают, что количество массивов равно двум, который не может быть уверен в моем случае.
У меня есть divs на странице с данными, которые содержат массивы. Я хочу найти значения, общие для всех массивов. Я не знаю, сколько div/массивов у меня будет заблаговременно. Каков наилучший способ вычисления значений, общих для всех массивов?
var array1 = ["Lorem", "ipsum", "dolor"];
var array2 = ["Lorem", "ipsum", "quick", "brown", "foo"];
var array3 = ["Jumps", "Over", "Lazy", "Lorem"];
var array4 = [1337, 420, 666, "Lorem"];
//Result should be ["Lorem"];
Я нашел другое решение в другом месте, используя Underscore.js.
var arrayOfArrays = [[4234, 2323, 43], [1323, 43, 1313], [23, 34, 43]];
_.intersection.apply(_, arrayOfArrays)
//Result is [43]
Я тестировал это с помощью простых фиктивных данных в конце и, похоже, работал. Но по какой-то причине некоторые из массивов, которые я создаю, которые содержат простые строки, также автоматически включают добавленное значение, "equals: function":
["Dummy1", "Dummy2", "Dummy3", equals: function]
И всякий раз, когда я использую метод пересечения Underscore.js, в массиве массивов я всегда получаю [equals: function] в инструментах dev, а не - если "Dummy3" является общим для всех массивов - [ "Dummy3" ].
Итак, TL; DR есть другое решение для пересечения массива, которое подойдет моему делу? И может ли кто-нибудь объяснить, что означает [equals: function] здесь? Когда я разворачиваю элемент в инструментах dev, он создает пустой массив и список доступных методов на массивах (поп, push, shift и т.д.), Но все эти методы исчезают, а функция equals: выделена.