Как использовать встроенный фильтр angularjs для сравнения полного значения ключа в массиве json - PullRequest
1 голос
/ 28 марта 2019

У меня есть массив JSON, и я хочу отфильтровать в нем некоторые элементы на основе соответствующих критериев.

{{myJsonArray |фильтр: {myKey: myValue}}}

Проблема со встроенным фильтром в AngularJS заключается в том, что он не сравнивает полное значение предоставленного ключа, а сравнивает часть значения измассив.

Я не вижу никакой другой альтернативы встроенному фильтру, который я могу использовать в HTML.

//My Json Array
$scope.myJsonArray = [
 { id : 1, myKey : "5" },
 { id : 2, myKey : "10" },
 { id : 3, myKey : "15" },
 { id : 4, myKey : "20" }
];
{{ (myJsonArray | filter : { myKey : 1 }).length }}

I, за исключением того, что вывод равен 0, поскольку значение, предоставленное myKey, делаетне существует ни в одном из объектов Json в массиве.

Но фактический результат равен 2.

Причина в том, что фильтр angularjs сравнивает предоставленное значение1 с 10 и 15 и возвращает true, если в этих ключах действительно есть 1.

Я хочу, чтобы фильтр сравнивал ключ как одно полное значение, а не как часть значения.

1 Ответ

1 голос
/ 28 марта 2019

Вот рабочий: https://plnkr.co/edit/a9LR7lWpgluzufUZTzUF?p=preview

Вы ожидаете строгого равенства, поэтому используйте приведенное ниже решение

{{ (myJsonArray | filter : { myKey : '15' }:true).length }}

Посмотрите на: true в конце, который используется для определения строгого сравнения.

{ myKey : '15' }:true

См. https://code.angularjs.org/1.6.10/docs/api/ng/filter/filter и посмотрите на компаратор (3-й аргумент) в документации

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...