Что делают фильтры в этой функции? Как мы возвращаем то, что возвращаем?

Что делают фильтры в этой функции? Как мы возвращаем то, что возвращаем?

Если вы еще не знаете, фильтр — это функция массива более высокого порядка, которая принимает функцию предиката в качестве параметра, запускает эту функцию для каждого элемента массива и возвращает новый массив, содержащий только те элементы, для которых предикат вернул значение true. Более подробная информация здесь: https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/filter .

В случае a.filter((v, i) ={amp}gt; v != b[i]) каждый a[i] of a проверяется, чтобы a.filter((v, i) ={amp}gt; v != b[i]) равен ли он b[i] . Если он равен, то он отфильтровывается. Результирующий массив ad будет содержать только элементы a , которые отличаются между массивами. То же самое с bd .

Если длина ad равна 0, то между a и b нет различий, поэтому функция возвращает true. Следующая часть зависит от определения «схожий». Похоже, что автор хотел пометить два массива как одинаковые, если они либо идентичны, либо имеют одинаковые элементы, но с заменой одной и только одной пары элементов.

Если одна пара элементов поменялась местами, то в объявлении будет ровно два элемента, и bd. Но их содержимое будет переключено, поэтому автор меняет bd, а затем проверяет, совпадает ли оно с объявлением.

Пример:

 let a = [1, 2, 3, 4] let b = [1, 4, 3, 2] 

Тогда ad == [2, 4] и bd == [4,2] поэтому ad.join('') == bd.reverse().join('')

Примечание. Объединение позволяет сравнивать массивы в качестве значений, поэтому окончательное сравнение будет "24" === "24"

Понравилась статья? Поделиться с друзьями:
JavaScript & TypeScript
Adblock
detector