当需要数组时,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