gpt4 book ai didi

javascript - 循环未定义的数组键

转载 作者:行者123 更新时间:2023-11-28 13:20:34 26 4
gpt4 key购买 nike

问题:

我有一个包含数学练习的数据库,按难度级别和练习日期划分。

我想生成一段时间内的性能图表。

为了实现这一点,我循环遍历查询结果,并++一个计数器来记录锻炼的级别和日期。

示例:2 级演习于 2015 年 11 月 1 日进行。this.levels[2].daysAgo[1].amountTaken++;

有了这个,我可以构建一个图表,其中第 0 天始终是今天,并显示几天的性能。

现在levels[]有预定义的关卡数量,所以没有问题。但是 daysAgo[] 是非常动态的(它甚至每天都会改变相同的数据),所以如果只进行一次练习,它会每天徘徊(从 daysAgo[0]daysAgo[1] 等等)。其间的 daysAgo[] 将为空(因为没有条目)。

但为了评估图表,我需要它们具有 amountTaken: 0, 等初始化状态。

问题是:我不知道最旧的练习是什么时候。

想法 1:

首先收集一种代理对象中的所有条目,其中我有一个 var maxDaysAgo 保存最旧练习的值,然后初始化一个数组 daysAgo[maxDaysAgo] > 在插入实际条目之前,它会被 0 条目填充。

这看起来非常笨拙且过于复杂

想法 2:

只需添加条目 this.level[level].daysAgo[daysAgo].amountTaken++;,可能会在 daysAgo 数组中留下大量 未定义 键。然后,在添加所有条目后,我将使用 daysAgo 键循环

for (var i = 1; i < this.maxLevel; i++) {                       // for every level
for (var j = 0; j < this.levels[i].daysAgo.length; j++) {

但是daysAgo.length不会计算未定义的字段,不是吗?

因此,如果我在 [24] 有一个条目,length 仍将是 1 :/

问题:

当之间存在未定义的键时,如何找出数组中的最高键并循环直到那里?我如何处理所有未定义的键,直到最高的键(而不是更多)?

或者:有什么不同的、更优雅的方式来完全解决整个问题?

谢谢:)

最佳答案

array.length返回比最高数字索引高的一个,因此可以用于循环,即使是未定义的值

作为测试:

var a=[]
a[24]=1
console.log(a.length)

为我输出 25(在 Chrome 和 Firefox 中)。

关于javascript - 循环未定义的数组键,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33481240/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com