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

180
28 июня 2018, 17:40

вместе с гуглом решила вот так.

var firstArray = [1,2, 2];
var secondArray = [3,4];
var mergedArray = firstArray.concat(secondArray);
var removeDuplicates = mergedArray.filter(function (elem, index) {
return mergedArray.indexOf(elem) === index})

но не могу понять эту строку

return mergedArray.indexOf(elem) === index

зачем зачем === index?

Answer 1

Это условие фильтрации. Так как mergedArray.indexOf(elem) вернет первый индекс, то таким образом вы избавитесь от всех дублирующих значений (в данном случае от 2: [1, 2, 2, 3, 4] -> [1, 2, 3, 4]).

[1, 2, 2, 3, 4].indexOf(2) всегда будет возвращать 1 (индекс первого совпадения).

Соответственно [1, 2, 2, 3, 4].indexOf(2) === 2 // 1 === 2 на третье итерации вернет false и это значение не попадет в результирующий массив.

READ ALSO
Слайдер калькулятор

Слайдер калькулятор

Нужно сделать калькулятор выгоды по простой формуле: Формула расчет прибыли: 2300 * количество заказов * 0,27

202
AJAX вернуть несколько массивов

AJAX вернуть несколько массивов

Можно ли при помощи AJAX вернуть сразу несколько массивов? Не нашёл решения, подскажите как можно решить такую задачу ? (или всё объединять в один,...

173
Как получить элементы из Shadow DOM?

Как получить элементы из Shadow DOM?

На странице истории Google Chrome, все ссылки хранятся в так называемом «Shadow DOM»:

164