javascript - 使用 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"}]
提前谢谢你的帮助。
解决方案
您可以添加 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);
推荐阅读
- java - ArrayList 中的最小因子
- javascript - 如何用 Sinon 模拟 pg Pool
- c - 如何使用 Xcode 编译 C 程序,以便在沙箱中使用二进制文件?
- python - 在我看来,从模块扩展 django 类
- java - 密码生成器(如何向该程序添加构造函数)
- mongodb - MongoDB - 如何使用另一个集合中的字段将字段添加到一个集合中的嵌套对象?
- java - 遍历具有重复值的 Map 并识别共享这些值的键
- function - 如何使用带有 IO 读取 Int 的绑定重写“do”块?
- swift - 如何将字符串转换为包含 ? 在 Swift 4.2 的字符串中
- javascript - 从 this.props.location.state 派生时无法编辑文本框中的内容