我正在尝试使用.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,我得到一个空数组。
任何人都可以解释发生了什么吗?谢谢!
答案 0 :(得分:1)
e.target.value
是字符串值。您正在与数据类型和值进行严格比较。
更新代码
var homeCountry = this.props.searchedCountry.filter(country => country.id === parseInt(e.target.country.value));
答案 1 :(得分:0)
e.target.value
将是一个字符串,但是它们是多种处理方式,可以使用parseInt(e.target.value)
或Number(e.target.value)
或e.target.valueAsNumber
。其次,===
会检查您正在比较的操作数的值以及数据类型,因此{1 === "1"
会被评估为false,而1 === 1
会被评估为true,执行{ {1}}仅会比较这些值,如果要使用==
(非严格等于),则不必使用上面建议的解决方案来解决问题,因此(==
)是正确的,(1 == 1
也是正确的,但是如果您想使用1 == "1"
(建议),请使用上面建议的解决方案