Давайте сломаем это:
forEach
jsonпринимает функцию. Первый аргумент - это одно из значений if (val [key] ==) {ues от повторяющейся вещи. Второй и третий аргументы - это текущий индекс и сам массив, который вам нужен, если вы хотите возиться с массивом, итерации через него.
В этом случае функция будет получать каждую из вещей, хранящихся в valобъекте, по одному за раз.
val[key]
valявляется объектом. keyозначает «from result.push(val) , получить свойство с именем val».
key
Если свойство vals val[key]было равно значению, для которого мы фильтруемся, мы valвставляем объект в список возвращаемых объектов.
Я думаю, что смысл путаницы в значении []. arr[0]Синтаксис используется как для индекса в массиве ( foo[bar]получает первое в списке) и получить свойство объекта ( foo.barполучает val)