首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >若非语句的用法

问若非语句的用法
EN

Stack Overflow用户
提问于 2015-06-24 16:07:21
回答 3查看 142关注 0票数 0
代码语言:javascript
复制
    function statsForDays(data) {
    var days = {};
    var currentDate;
    var lastValue;

    for (var i=0, l=data.length; i<l; i++) {
        var element = data[i];
        var timestamp = element[0];
        var value = element[1];
        var date = new Date(timestamp);
        if (!lastValue) lastValue = value;
        if (currentDate != date.getDate()) {
            currentDate = date.getDate();
            days[String(date.getMonth()+1)+'-'+String(currentDate)] = value - lastValue;

            lastValue = value;
        }
    }

    return days;
}

有人能向我解释一下上面的功能是如何工作的吗?我知道它是如何产生的,但是我想知道if (!lastValue) lastValue = value;在函数中做了什么?这似乎是一种算法,但它是如何工作的呢?既然lastvalue被设置为等于value,那么为什么以后在days[String(date.getMonth()+1)+'-'+String(currentDate)] = value - lastValue;中将它们相互替换呢?那为什么还要和他们一样呢?

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2015-09-17 11:53:52

当循环开始迭代时,它检查变量是否等于某个值?如果lastvalue设置为nothing,则它等于lastvalue为value,或者如果lastvalue具有某些值,则第一个if语句不会执行任何操作。

票数 0
EN

Stack Overflow用户

发布于 2015-06-24 16:35:22

循环的每一次迭代都记录每一行数据之间的天数差异。但是,对于索引0,没有“以前”元素可与之比较。当它说"if (!lastValue)“时,意思是”如果最后一个值等于0“。然后,它将减去值-值,并在几天内记录该差值的0。

票数 0
EN

Stack Overflow用户

发布于 2015-06-24 16:37:47

变量lastValue开始统一,默认情况下等于undefined。如果lastValue仍未定义,则输出days的第一个元素将具有NaN值,因为(value - undefined)的输出不可避免地无法计算。

这个函数似乎返回每个“M”值以及减去前一天值的值。不考虑重复的日子:

代码语言:javascript
复制
statsForDays([ 
  [new Date(2015,0,1),3], 
  [new Date(2015,1,2), 4], 
  [new Date(2015,2,3), 11], 
  [new Date(2015,3,5), 5], 
  [new Date(2015,3,5), 5] ]
            )

/*
Returns:
Object { 1-1=0,  2-2=1,  3-3=7, 4-5=-6 }
*/
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/31031581

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档