JavaScript sort()不能对来自API的值进行完全排序[已关闭]

wqsoz72f  于 2023-01-16  发布在  Java
关注(0)|答案(1)|浏览(127)

编辑问题以包含desired behavior, a specific problem or error, and the shortest code necessary to reproduce the problem。这将有助于其他人回答问题。
昨天关门了。
这篇文章是昨天编辑并提交审查的。
Improve this question
我正在做一个API调用,我想按数字对项目进行排序。虽然我使用的以下函数在大多数情况下排序效果很好,但在接近结尾时排序就崩溃了。如果你在"当前中断"下查看,你就可以看到我在live website here上的意思。从倒数第六个条目开始的所有内容都拒绝排序。
我是不是漏掉了什么?

const fetchDisruptions = async () => {
  try {
    const url = "https://data.edmonton.ca/resource/5yvt-mcye.json"
    url.search = new URLSearchParams ({
      "$$app_token": app.token
    });
    const response = await fetch(url);
    const data = await response.json();
    return data;

  } catch (error) {
    console.log("error");

  return error
  }
}

const renderDisruptions = () => {

  fetchDisruptions().then((disruption) => {

    const currentTime = (new Date).toLocaleString('en-CA', {timeZone: "America/Edmonton", year:"numeric", month:"numeric", day:"numeric", hour12:false, hour: "numeric", minute:"2-digit", second: "2-digit"})
    const currentTimeUnix = Date.parse(currentTime.replace(",", ""))
    
    const filteredArray = disruption.filter((entry)=> {
      const disruptionStart = Date.parse(entry.start_dttm);
      const disruptionEnd = Date.parse(entry.end_dttm) 

      if (currentTimeUnix >= disruptionStart && currentTimeUnix <= disruptionEnd) {
        return entry;
      } 
    }).sort((a,b) => {
      
      if (a.route_id < b.route_id) return -1;
      if (a.route_id > b.route_id) return 1;
      return 0;
    })
  })
}
p4tfgftt

p4tfgftt1#

你的代码段没有运行,所以我不能肯定,但是从API结果来看,我看到一些结果不包含route_id,这可能是罪魁祸首。如果两条路由中的一条不包含route_id,那么你编写排序函数的方式将返回0。
看起来这些route_id实际上是包含字母数字字符的字符串,可能会影响您预期的排序(即“21X”〉“920”)。

相关问题