Javascript 使用循环比较本周和上周

Javascript 使用循环比较本周和上周,javascript,algorithm,ecmascript-6,Javascript,Algorithm,Ecmascript 6,我想比较一下本周和上周的动物数量百分比数据,但我还是停留在比较算法上。我只能生成数据 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:

我想比较一下本周和上周的动物数量百分比数据,但我还是停留在比较算法上。我只能生成数据

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

  })
}

我使用了部分代码,并添加了一些想法,试图设置您的预期输出。我想这就是你想要的。您可以大大改进代码,只需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);
let data=[];
for(设i=0;i<14;i++){
让狗=[];
设cat=[];
让dog_count=u.random(0,100),
cat_计数=u.random(0,100)
var总计数=狗计数+猫计数;
var类别计数=类别计数/总计数;
var dog_count_perc=dog_count/总计数;
var cat_int=0;
var dog_int=0;
如果(狗计数>猫计数)
{
dog_int=1;
cat_int=-1;
}否则如果(猫计数>狗计数)
{
dog_int=-1;
cat_int=1;
}
狗推({
百分比:狗数/豆腐(2),
指示符:dog_int
});
猫推({
百分比:每种豆腐的类别计数(2),
指示器:cat_int
})
数据推送({
日期:矩().减去(i,'d')。格式('YYYY-MM-DD'),
狗:狗,
猫:猫
})
}
控制台日志(数据);

jsfiddle

以下是伪代码

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);
}
1。生成上周的数据,按日期排序(让lastWeekData)
2.生成按日期排序的当前周数据(让currentWeekData)
3.声明输出数组(让输出=[])
4.对于(var i=0;i

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

您将什么与什么进行比较?从你的问题中,我知道你想将本周的值与上周的值进行比较,但你的例子建议你尝试分别比较猫和狗的每一天。@VincentvanderWeele例如在星期一(日期),周一的狗数与上周一的狗数,同样,cat.dog和cat不应该是数组,而应该是对象。我想把今天(星期四)说的和前一个星期四说的比较一下,你的循环逻辑是错误的。好吧,很难理解你的主要帖子想要什么。请编辑它,我们将能够帮助您。这并不难,将最近7天与前7天进行比较。
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);
}