当需要数组时,Filter() 方法返回布尔值
Filter() method is returning boolean when an array is expected
我正在从两个不同的 API 获取两个对象数组 - 一个用于事件,一个用于天气。我的最终目标是显示事件列表,并在事件旁边包括事件开始时间的天气预报。
回复正常,但时间格式不同。 unix 中的天气,UTC 中的事件。我已经制作了格式化这两个时间的函数,它们似乎工作正常。
我是 运行 下面的代码,当我期望数组为空 []
或包含一些事件数据对象时,我得到了 false
的返回值。
const getEventAndWeather = (seatGeekEvents, hourlyForecast) => {
const eventAndWeatherArray = seatGeekEvents
.filter((event) => formatEventTime(event.datetime_local))
.includes(hourlyForecast.map((forecastItem) => (formatWeatherTime(forecastItem.dt))));
return eventAndWeatherArray
};
console.log(getEventAndWeather(seatGeekEvents, hourlyForecast));
为了实现我的目标,我认为我可以使用包含包含的过滤方法,同时格式化我正在比较的值,但我担心我的裤子太花哨了。即使我最后不使用这种方法组合,当 filter
通常 returns 一个数组时,函数如何返回 false
?
问题是您得到的结果是 .includes()
,而不是 filter()
。
在您的代码中,您首先调用 filter()
,其中 return 一个数组,然后调用 includes
方法,其中 return 一个布尔值。
这是一个例子
const arr = [6,55,33,14];
const result = arr
.filter(item => item > 10) // at this state array [55,33] returned
.includes(29) // returns false because there is no such elem
console.log(result) // false
我正在从两个不同的 API 获取两个对象数组 - 一个用于事件,一个用于天气。我的最终目标是显示事件列表,并在事件旁边包括事件开始时间的天气预报。
回复正常,但时间格式不同。 unix 中的天气,UTC 中的事件。我已经制作了格式化这两个时间的函数,它们似乎工作正常。
我是 运行 下面的代码,当我期望数组为空 []
或包含一些事件数据对象时,我得到了 false
的返回值。
const getEventAndWeather = (seatGeekEvents, hourlyForecast) => {
const eventAndWeatherArray = seatGeekEvents
.filter((event) => formatEventTime(event.datetime_local))
.includes(hourlyForecast.map((forecastItem) => (formatWeatherTime(forecastItem.dt))));
return eventAndWeatherArray
};
console.log(getEventAndWeather(seatGeekEvents, hourlyForecast));
为了实现我的目标,我认为我可以使用包含包含的过滤方法,同时格式化我正在比较的值,但我担心我的裤子太花哨了。即使我最后不使用这种方法组合,当 filter
通常 returns 一个数组时,函数如何返回 false
?
问题是您得到的结果是 .includes()
,而不是 filter()
。
在您的代码中,您首先调用 filter()
,其中 return 一个数组,然后调用 includes
方法,其中 return 一个布尔值。
这是一个例子
const arr = [6,55,33,14];
const result = arr
.filter(item => item > 10) // at this state array [55,33] returned
.includes(29) // returns false because there is no such elem
console.log(result) // false