我有一个map函数,在某些情况下,它带给我很多带有不同值的字符串(在map函数之前,我也有一个filter函数)。
第一:我确定返回的是字符串,因为我console.log(typeof thing.name)
并且它返回的是字符串。
在某些情况下,它带给我很多字符串,在另一些情况下,我带给我什么,因为返回取决于过滤器。
问题是:当过滤器未显示任何结果时,控制台日志不会打印任何内容。我知道,这很有意义。但是,我试图使过滤器返回0 /无/无结果时返回“ undefined,null,false / true”的条件。有可能的?
我有类似的东西:
filteredOffers.map(offer => {
if(offer.name === "" || offer.name === null || offer.name === undefined) {
console.log("Test test test")
} else {
return (
<p>{offer.name}</p>
)
}
})
答案 0 :(得分:2)
您的问题是
为什么console.log没有显示任何内容?
在您的问题中您说
当过滤器未显示任何结果时,控制台日志不会显示任何内容
发生了什么事。
.filter
将返回一个新数组,其中仅包含已通过某些条件并返回true
的数组元素。如果没有条件成立,它将返回一个空数组([]
)。
.map
将循环遍历一个数组,并在此新数组中返回某些内容,如果它是一个空数组,则.map
不会只返回该空数组。
当您说when the filter brings me no results
时,这意味着.filter
返回了一个空数组,而当您执行[].map(...)
时,.map
内部的函数将不会运行,而只会返回[]
。
回答Why console.log shows me nothing?
,您正在做[].map(...)
,该函数永不运行。
答案 1 :(得分:1)
测试
!offer.name
在以下情况下将返回true
所以您可能要按照以下条件过滤报价
filteredOffers.filter(offer => !!offer.name)
然后才映射输出
filteredOffers.filter(offer => !!offer.name).map(offer => (<p>{offer.name}</p>))