[{date:'2017-8-1',count: 100},
{date:'2017-8-2',count: 200},
{date:'2017-8-3',count: 101},
{date:'2017-8-4',count: 123},
{date:'2017-8-5',count: 14},
{date:'2017-8-6',count: 12},
{date:'2017-8-7',count: 2},
{date:'2017-8-8',count: 3}] //today

У меня есть 8 элементов массива, я хочу найти разницу каждого дня. Но я не знаю, как рассчитать разницу предыдущего дня. Например, разница между 2017-8-8 по сравнению с 2017-8-7 равна 1, как мне нужно сделать цикл?

-3
Cecilia Chan 28 Авг 2017 в 11:00

3 ответа

Лучший ответ

Вы можете использовать forEach для вычисления разницы между двумя соседними значениями счетчика в массиве следующим образом:

var data = [{date:'2017-8-1',count: 100},
{date:'2017-8-2',count: 200},
{date:'2017-8-3',count: 101},
{date:'2017-8-4',count: 123},
{date:'2017-8-5',count: 14},
{date:'2017-8-6',count: 12},
{date:'2017-8-7',count: 2},
{date:'2017-8-8',count: 3}];

var result = [];
data.forEach(function(obj, idx) {
  if(!idx) return;
  result.push(data[idx].count - data[idx-1].count);
});

console.log(result);
0
abhishekkannojia 28 Авг 2017 в 08:16

Вы можете сделать new Date("2017-8-8").getDate()

Я надеюсь, что это поможет вам :)

var input = [{date:'2017-8-1',count: 100},
{date:'2017-8-2',count: 200},
{date:'2017-8-3',count: 101},
{date:'2017-8-4',count: 123},
{date:'2017-8-5',count: 14},
{date:'2017-8-6',count: 12},
{date:'2017-8-7',count: 2},
{date:'2017-8-8',count: 3}];
for(var i = input.length-1; i>0; i--){
   var dateDiff = new Date(input[i].date).getDate() - new Date(input[i-
   1].date).getDate();
   //pushing the diff in input array
   input[i].diffFromPrevEntry = dateDiff;
}
console.log(input)
0
Nemani 28 Авг 2017 в 08:20

Вот фрагмент, который вычисляет различия.

var dataArray = [
{date:'2017-8-1',count: 100},
{date:'2017-8-2',count: 200},
{date:'2017-8-3',count: 101},
{date:'2017-8-4',count: 123},
{date:'2017-8-5',count: 14},
{date:'2017-8-6',count: 12},
{date:'2017-8-7',count: 2},
{date:'2017-8-8',count: 3}
];

function calculateDifferences(data) {
  var result = [];
  
  // Start at index 1 instead of 0 so we immediately have a previous item.
  for (var index=1; index<data.length; index++) {
  // Get the item at the current and previous index.
      var previousItem = data[index - 1],
          currentItem = data[index];
    // Push an object into the result array with the start and 
    // end date, as well as the difference between the count of the two days.
    result.push({
      startDate: previousItem.date,
      endDate: currentItem.date,
      difference: currentItem.count - previousItem.count
    });    
  }
  
  // Return the array with the result.
  return result;
}

// Log the result of the method.
console.log(calculateDifferences(dataArray));
0
Thijs 28 Авг 2017 в 08:21