Vue Apexchart统计模块对象转数组null值后置问题咨询
问题根因
null值被排在数组末尾的核心原因有两个:
- JS 中普通对象的字符串类型键的遍历规则是按插入时间排序。你统计数据时,先为有事件触发的日期创建了对象键,后续才遍历日期列表补全了值为null的缺失日期键,这些补插的键插入时间更晚,调用
Object.keys()/Object.values()时自然会排在后面。 - 你转换数组时没有使用提前整理好的、按时间顺序排列的
newLabels日期列表作为顺序基准,而是直接遍历统计对象的键,自然无法匹配预期的日期顺序。
解决方案
你已经有了按时间顺序排好的全量日期数组newLabels,直接以它为顺序基准,从每个统计对象中取值即可,逻辑非常简单:
// 如果你已经提前给统计对象补全了null值,直接映射即可 const ArrayA = newLabels.map(date => open[date]) const ArrayB = newLabels.map(date => closed[date])
你也可以省略提前补全null的步骤,在映射时做兜底处理,代码更简洁:
// 无需提前补null,取值时做兼容即可 const ArrayA = newLabels.map(date => open[date] ?? null) const ArrayB = newLabels.map(date => closed[date] ?? null)
你原有代码里直接遍历Object.keys(open)、以及把open和closed的取值混塞入同一个数组的逻辑都是错误的,直接替换为上面的映射逻辑即可得到符合要求的数组。
内容的提问来源于stack exchange,提问作者gurvan seveno
相关产品推荐
相关产品推荐

