javascript - 如何从 Javascript 中的对象列表中记录一组值?
问题描述
我有几天的数组,每天分为 30 分钟的块,其中每个块都是一个对象数组。我想获取每个块的键“wake”的值。如果wake 为假然后为真,我想将1 加到名为sleepFrag 的变量中,如果“wake”为假,我想将30 加到名为sleepPeriod 的变量中。我想控制台记录我的两个变量 sleepPeriod 和 sleepFrag。
这就是我要读取的列表的样子(我只包括两天的两个小时,每个“块”分为 24 小时,我不知道有多少天):
days = [
{
chunks: [
{
BM: 1,
ID: 0,
hour: "00",
issue: 0,
mealP: 30,
timeMins: "00",
wake: true
},
{
BM: 0,
ID: 1,
hour: "00",
issue: 0,
mealP: 30,
timeMins: "30",
wake: true
},
{
BM: 0,
ID: 2,
hour: "01",
issue: 0,
mealP: 0,
timeMins: "00",
wake: false
},
{
BM: 0,
ID: 3,
hour: "01",
issue: 3,
mealP: 0,
timeMins: "30",
wake: false
}
],
epoch: 1563163200
},
{
chunks: [
{
BM: 0,
ID: 0,
hour: "00",
issue: 0,
mealP: 0,
timeMins: "00",
wake: true
},
{
BM: 0,
ID: 1,
hour: "00",
issue: 0,
mealP: 0,
timeMins: "30",
wake: true
},
{
BM: 0,
ID: 2,
hour: "01",
issue: 0,
mealP: 0,
timeMins: "00",
wake: true
},
等等
这是我已经尝试过的:
function getSleep(daysIn){
sleepFrag = 0
sleepPeriod = 0
for (chunk=0; chunk < days.length; chunk++){
for(element=0; element< days[chunk].length; element++){
if(days[element-1].wake==false)&&(days[element].wake==true){
sleepFrag+=1
}
else if (days[element].wake==false){
sleepPeriod+=30
}
}
console.log("this is the sleep amount for day"+chunk+":"sleepPeriod)
console.log("this is the number of sleep fragments for day"+chunk+":"sleepFrag)
}
console.log("this is the total number of sleep fragments :"+sleepFrag)
console.log("this is the total amount of sleep :"+sleepPeriod)
}
console.log("sleep fragments and sleep periods")
getSleep(days)
我在控制台上没有日志,也没有错误。我希望得到:
睡眠片段和睡眠时间
这是当天的睡眠量(代表当天的“块”):(当天的睡眠时间)
这是当天的睡眠片段数(代表当天的“块”):(当天的 sleepFrag)
这是睡眠碎片的总数:(睡眠碎片的数量)这是睡眠的总量:(睡眠的数量)
解决方案
你的函数的逻辑其实是对的。。但是代码写得很差。。没有var声明,没有分号(;)等。这里是精炼的函数:
function getSleep(daysIn){
var sleepFrag = 0
var sleepPeriod = 0
for (var i=0; i < daysIn.length; i++){
var day = daysIn[i];
var chunksOfTheDay = day.chunks;
for(var j=1; j < chunksOfTheDay.length; j++){
if((chunksOfTheDay[j-1].wake === false) && (chunksOfTheDay[j].wake === true)){
sleepFrag+=1
}
else if (chunksOfTheDay[j].wake === false){
sleepPeriod+=30
}
}
console.log("this is the sleep amount for day"+i+":"+sleepPeriod);
console.log("this is the number of sleep fragments for day"+i+":"+sleepFrag);
}
console.log("this is the total number of sleep fragments :"+sleepFrag);
console.log("this is the total amount of sleep :"+sleepPeriod);
}
console.log("sleep fragments and sleep periods");
getSleep(days);
推荐阅读
- java - 如果上一个方法没有结果,则调用下一个方法
- javascript - JS:通过 .push() 方法意外继承
- arduino - Arduino FastLed 随机行为
- stan - 如何在 Stan 模型中传递具有不同长度的向量列表和具有不同维度的矩阵列表?
- vb.net - 在这种情况下如何避免后期绑定?
- amazon-web-services - Terraform - 无法使用 t2.micro 实例类型安装“aws linux ami”
- java - 为 Prometheus 公开指标端点的替代方法是什么?
- typescript - tsconfig 在严格模式下出现问题并且类型 (...) 不可分配给类型 (...)
- swift - 如何从数据选择器中设置选定的时间,然后根据用户选择的时间显示包含时间输出的表格?
- google-cloud-storage - 如何使用带有签名网址的 gcs-resumable-upload