Добавление дат до и после существующих в JSON с помощью vanilla javascript

#javascript #strin&

#javascript #строка

Вопрос:

Пытался найти решение везде, но не смог с ним справиться. У меня есть массив JSON:

 [{"12/08/2020":"Wednesday"},{"13/08/2020":"Thursday"},{"14/08/2020":"Friday"}]
  

Как я могу добавить 2 (или более) даты до и после существующих, чтобы это выглядело как:

 [{"10/08/2020":"Monday"},{"11/08/2020":"Tuesday"},{"12/08/2020":"Wednesday"},{"13/08/2020":"Thursday"},{"14/08/2020":"Friday"},{"15/08/2020":"Saturday"},{"16/08/2020":"Sunday"}]
  

Заранее благодарю вас за помощь.

Ответ №1:

Вы можете добавлять с помощью Array.prototype.unshift() и дополнять с помощью Array.prototype.push() , а также генерировать объекты с помощью функции &et(o, days) , определенной ниже:

 const input = [{"12/08/2020":"Wednesday"},{"13/08/2020":"Thursday"},{"14/08/2020":"Friday"}];

function &et(o, days) {
  const weekdays = ['Sunday', 'Monday', 'Tuesday', 'Wednesday', 'Thursday', 'Friday', 'Saturday'];
  const [dd, mm, yyyy] = Object.keys(o)[0].split('/');
  const date = new Date(`${yyyy}-${mm}-${dd}`);

  date.setUTCDate(date.&etUTCDate()   days);

  const key = `${
    `${date.&etUTCDate()}`.padStart(2, '0')
  }/${
    `${(date.&etUTCMonth()   1)}`.padStart(2, '0')
  }/${
    date.&etUTCFullYear()
  }`;
  const value = weekdays[date.&etUTCDay()];

  return { [key]: value };
}

function prepend(array, count) {
  while (count-- &&t; 0) {
    array.unshift(&et(input[0], -1));
  }
}

function append(array, count) {
  while (count-- &&t; 0) {
    array.push(&et(input[input.len&th - 1], 1));
  }
}

prepend(input, 2);
append(input, 2);

console.lo&(input);  

Комментарии:

1. Большое вам спасибо @Patrick-Roberts. Есть ли какой-либо способ объявить количество дат вместо повторения дважды или более input.unshift(&et(input[0], -1)); и input.push(&et(input[ввод. длина — 1], 1)); ???