繁体   English   中英

如何记录Javascript对象列表中的值数组?

[英]How do I log an array of values from a list of objects in Javascript?

我有一个天数组,其中每天分为30分钟的块,其中每个块都是一个对象数组。 我想获取每个块的键“唤醒”的值。 如果wake为false,然后为true,我想将1加到一个名为sleepFrag的变量中,如果“ wake”为false,我想将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)

我没有在控制台上登录,也没有错误。 我希望得到:

睡眠碎片和睡眠时间

这是一天的睡眠量(“ im”代表当天的睡眠时间):(该天的sleepPeriod)

这是一天的睡眠片段的数量(“大块”代表即时消息所在的日期):(该天的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);

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM