首页 > 解决方案 > 使用 vanilla javascript 在 JSON 中现有日期之前和之后添加日期

问题描述

试图到处寻找解决方案,但苦苦挣扎。我有一个 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"}]

提前谢谢你的帮助。

标签: javascriptstring

解决方案


您可以添加 usingArray.prototype.unshift()和 append using Array.prototype.push(),并使用下面定义的函数生成对象get(o, days)

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

function get(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.getUTCDate() + days);

  const key = `${
    `${date.getUTCDate()}`.padStart(2, '0')
  }/${
    `${(date.getUTCMonth() + 1)}`.padStart(2, '0')
  }/${
    date.getUTCFullYear()
  }`;
  const value = weekdays[date.getUTCDay()];

  return { [key]: value };
}

function prepend(array, count) {
  while (count-- > 0) {
    array.unshift(get(input[0], -1));
  }
}

function append(array, count) {
  while (count-- > 0) {
    array.push(get(input[input.length - 1], 1));
  }
}

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

console.log(input);


推荐阅读