【问题标题】:Calculate Difference of each value of array in javascript?计算javascript中每个数组值的差异?
【发布时间】:2017-06-25 22:14:41
【问题描述】:

我有以下数据集。我有一个这样的对象数组

[{ 
    createdAt: Wed Feb 08 2017 12:16:35 GMT+0500 (Pakistan Standard Time),
    set: 'jr',
},{ 
    createdAt: Wed Feb 08 2017 12:18:36 GMT+0500 (Pakistan Standard Time),
    or: 'd',
},{ 
    createdAt: Wed Feb 08 2017 12:22:46 GMT+0500 (Pakistan Standard Time),
    or: 'd',
},]

我想计算每个createdAt 之间的时间差,例如从第一个两个createdAt 字段,它将给出“2 分钟”。

【问题讨论】:

  • 显示预期结果的外观
  • 只是一个数字,比如分钟或秒
  • 你应该计算每个之间的差异吗?在 1 和 2 - 2 和 3 - 1 和 3 之间?

标签: javascript jquery arrays node.js rethinkdb-javascript


【解决方案1】:
var a = new Date(arr[0].createdAt);
var b = new Date(arr[1].createdAt);
var diff;

if(a > b) {
    diff = a.getTime() - b.getTime();
} else {
    diff = b.getTime() - a.getTime();
}

diff = diff/1000;

// now diff is in seconds
// calculate minutes by dividing it by 60
// use this in for loop

【讨论】:

    【解决方案2】:

    首先请注意,要使其正常工作,日期值必须是字符串。然后,您可以使用简单的for 循环遍历数组,将字符串转换为Date 对象并将当前日期值与下一个数组元素中的日期值进行比较。从那里您可以计算日期之间的分钟数。试试这个:

    var data = [{
      createdAt: 'Wed Feb 08 2017 12:16:35 GMT+0500 (Pakistan Standard Time)',
      set: 'jr'
    }, {
      createdAt: 'Wed Feb 08 2017 12:18:36 GMT+0500 (Pakistan Standard Time)',
      or: 'd'
    }, {
      createdAt: 'Wed Feb 08 2017 12:22:46 GMT+0500 (Pakistan Standard Time)',
      or: 'd'
    }]
    
    var differences = [];
    for (var i = 0; i < data.length - 1; i++) {
      var diff = new Date(data[i + 1].createdAt) - new Date(data[i].createdAt);
      var diffMins = new Date(diff).getMinutes();
      differences.push(diffMins);
    }
    
    console.log(differences); 

    请注意,上述逻辑取决于按升序排列的日期。

    【讨论】:

    • 很好,但你能告诉我如何在循环函数之外获取所有值。我认为需要新的数组来推送值,你能指导我吗
    • 你可以将它推送到一个数组中——我为你添加了一个例子
    • 感谢我完成了第二部分。我面临的主要问题是我想像这样添加这两个数组` [{ createdAt: 'Wed Feb 08 2017 12:16:35 GMT+0500 (Pakistan Standard Time)', set: 'jr' }, { createdAt: '2017 年 2 月 8 日星期三 12:18:36 GMT+0500(巴基斯坦标准时间)',或:'d', difference,2 }, { createdAt: '2017 年 2 月 8 日星期三 12:22:46 GMT+0500 (巴基斯坦标准时间)',或:'d',差异:4 }] `
    【解决方案3】:

    以秒为单位将日期转换为 unix 时间戳。然后你可以通过算术运算计算出秒数的差异,如下面的伪代码。

    var d1 = Date.parse('Wed Feb 08 2017 12:16:35 GMT+0500')/1000 //1486538195
    var d2 = Date.parse('Wed Feb 08 2017 12:18:35 GMT+0500')/1000 //1486538315
    var diff = Math.floor((d2 - d1)/60) + 'Min' + (d2-d1)%60 + 'Sec'
    

    同样,您可以迭代获取每个差异。

    【讨论】:

      猜你喜欢
      • 2019-03-02
      • 2015-03-26
      • 2014-12-08
      • 2015-04-07
      • 1970-01-01
      • 2021-02-17
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多