You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

JavaScript数组按starttime排序无效问题求助

问题根源与解决方案

你的数组里存的不是对象,而是JSON格式的字符串——虽然控制台日志会把它格式化显示成对象的样子,但本质上每个元素都是字符串类型。排序时a.starttime会返回undefined,导致比较逻辑完全失效,数组自然排不动。

解决办法

方法1:直接存入对象(推荐)

放弃拼接JSON字符串的冗余操作,直接创建JavaScript对象推入数组,这是最简洁高效的方案:

// 替换你原来的pushString和list.push(pushString)代码
list.push({
  naam: naamzonderNummer,
  starttime: begintijd,
  stoptijd: eindtijd
});

修改后数组里的元素都是真正的对象,你原来的排序代码可以直接生效。

方法2:先解析字符串为对象再排序

如果已经生成了存字符串的数组,先把每个元素解析为对象,再执行排序逻辑:

// 将字符串数组转换为对象数组
const parsedList = list.map(item => JSON.parse(item));
// 执行排序
parsedList.sort(function(a, b) {
  const keyA = new Date(a.starttime);
  const keyB = new Date(b.starttime);
  if (keyA < keyB) return -1;
  if (keyA > keyB) return 1;
  return 0;
});
// 后续使用parsedList即可得到排序后的结果

你可以用typeof list[0]验证原数组元素类型,会返回"string";而解析后的typeof parsedList[0]会返回"object",这就是两者的本质区别。

内容的提问来源于stack exchange,提问作者MGSneaky

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.12 11:05:26