【问题标题】:compare this week and last week using a loop使用循环比较本周和上周
【发布时间】:2017-08-10 07:14:01
【问题描述】:

我想比较本周和上周数据的动物数量百分比,但我卡在比较算法上。我只能生成数据。

let data = []
for (let i = 0; i < 14; i++) {

  let dog_count = _.random(0, 100),
    cat_count = _.random(0, 100)
  data.push({
    date: moment().subtract(i, 'd').format('YYYY-MM-DD'),
    total_count: dog_count + cat_count,
    dog_count,
    cat_count

  })
}

https://jsfiddle.net/xrx2aebx

我尝试实现的输出是这样的

...
[{
date: '2017-8-10',
dog: {
    percentage: 67,
    indicator: 1 //1 means greater, 0 means equal, -1 means lesser
},
cat: {
    percentage: 33,
    indicator: -1
}]
...

【问题讨论】:

  • 你在比较什么?根据您的问题,我了解到您想将本周的值与上周的值进行比较,但您的示例建议您尝试分别比较猫和狗的每一天。
  • @VincentvanderWeele 例如在星期一(一个日期),周一狗的数量与前周一的狗数量,猫的数量相同。

标签: javascript algorithm ecmascript-6


【解决方案1】:

我使用了您的部分代码,并在尝试设置您的预期输出时添加了一些想法。我想这就是你想要的。代码可以改进很多,5分钟就搞定了。

let data = [];

for (let i = 0; i < 14; i++) {
    let dog = [];
    let cat = [];
  let dog_count = _.random(0, 100),
  cat_count = _.random(0, 100)
  var total_count = dog_count + cat_count;

  var cat_count_perc = cat_count/total_count;
  var dog_count_perc = dog_count/total_count;
  var cat_int = 0;
  var dog_int = 0;

  if(dog_count_perc > cat_count_perc)
  {
    dog_int = 1;
    cat_int = -1;
  }else if (cat_count_perc > dog_count_perc)
  {
    dog_int = -1;
    cat_int = 1;
  }
  dog.push({
  percentage: dog_count_perc.toFixed(2),
  indicator: dog_int
  });
  cat.push({
  percentage: cat_count_perc.toFixed(2),
  indicator: cat_int
  })
  data.push({
    date: moment().subtract(i, 'd').format('YYYY-MM-DD'),
    dog: dog,
    cat: cat

  })
}
console.log(data);

jsfiddlehttps://jsfiddle.net/xrx2aebx/1/

【讨论】:

  • dog 和 cat 不应该是数组,而是对象。
  • 我想比较说今天(星期四)和前一个星期四,你的循环逻辑是错误的。
  • 嗯,很难理解您的主要帖子想要什么。请编辑它,我们将能够为您提供帮助。
  • 不难,比较最近7天和前7天。
【解决方案2】:

这是伪代码

1. Generate last week's data, ordered by date(let lastWeekData)
2. Generate current week's data, ordered by date(let currentWeekData)
3. declare output array(let output = [])
4. for(var i=0;i< currentWeekData.length;i++){
    var currentOutput = {date: currentWeekData[i].date, dog: {},cat: {}};
    currentOutput.dog.percentage = currentWeekData[i].dog_Count / lastWeekData[i].dog_Count * 100; //here you need to change the percentage formula based on your requirement
    currentOutput.cat.percentage = currentWeekData[i].cat_Count / lastWeekData[i].cat_Count * 100;
    output.push(currentOutput);
}

相应地更改您的百分比公式。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-04-03
    • 1970-01-01
    • 2013-11-28
    • 1970-01-01
    • 2020-10-11
    • 1970-01-01
    相关资源
    最近更新 更多