JS .filter () работает, когда передается целое число, но не когда передается переменная - PullRequest
0 голосов
/ 10 ноября 2018

Я пытаюсь использовать .filter, чтобы вытащить объект из массива объектов.

Когда я делаю это:

var homeCountry = this.props.searchedCountry.filter(country => country.id === 7);

Я получаю отфильтрованный массив, но когда я делаю это:

var homeCountry = this.props.searchedCountry.filter(country => country.id === e.target.country.value);

где e.target.country.value === 7, я получаю пустой массив.

Кто-нибудь может объяснить, что происходит? Спасибо!

Ответы [ 2 ]

0 голосов
/ 10 ноября 2018

e.target.value будет строкой, но есть несколько способов справиться с этим, если вы используете parseInt(e.target.value) или Number(e.target.value) или e.target.valueAsNumber. И, во-вторых, === проверяет значение, а также тип данных операндов, которые вы сравниваете, поэтому (1 === "1") будет оцениваться как false, но (1 === 1) будет оцениваться как true, а == будет сравнивать только значения, если вы хотите использовать == (не строго равен), вам не обязательно использовать предложенное выше решение для решения проблемы, поэтому (1 == 1) является истинным, а (1 == "1") также является истинным, но если вы хотите использовать === (что целесообразно), используйте предложенное выше решение

0 голосов
/ 10 ноября 2018

e.target.value - строковое значение. вы проводите строгое сравнение с типом данных и значением.

Обновлен код

 var homeCountry = this.props.searchedCountry.filter(country => country.id === parseInt(e.target.country.value));
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...