Массивный фильтр возвращает массив. Этот массив состоит из каждой строки исходного массива, для которой функция фильтра возвращает true.
Даже если массив имеет только одну запись, это еще массив
перед:
[0]{'id':'73','foo':'bar'}
[1]{'id':'45','foo':'ye'}
после:
[0]{'id':'45','foo':'ye'}
Думай другого примера
[0]{'id':'73','foo':'bar'}
[1]{'id':'45','foo':'ye'}
[2]{'id':'32','foo':'ye'}
[3]{'id':'33','foo':'ye'}
[4]{'id':'33','foo':'baz'}
функция shoult фильтрует любую строку, которая имеет значение «ye» для foo
[0]{'id':'45','foo':'ye'}
[1]{'id':'32','foo':'ye'}
[2]{'id':'33','foo':'ye'}
Вы видите. В обоих случаях возвращаемое значение представляет собой массив совпадающих объектов. Было бы неудобно, если бы мы вернули только один совпадающий объект, если получили только одно совпадение ({'id':'45','foo':'ye'}
).
Сначала метод фильтра должен принять решение о возврате массива или объекта. Затем получатель возвращаемого значения должен проверить, является ли это значение массивом или объектом. Это было бы довольно странно.
фильтр() вызывает функцию обратного вызова при условии один раз для каждого элемента в массив, и формирует новый массив всех значений, для которых обратного вызова возвращает значение, которое принуждает к истине. обратный вызов вызывается только для индексов массива, которым присвоены значения; это не , вызываемый для индексов, которые были удалены или которые никогда не были присвоенных значений. Элементы массива, которые не проходят тест обратного вызова , просто пропущены и не включены в новый массив.
Жирный мной
От: https://developer.mozilla.org/en/docs/Web/JavaScript/Reference/Global_Objects/Array/filter
'filter' отдача массив соответствующих элементов. [читать документы] (https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/filter) –