javascript - 替换对象数组
问题描述
我有以下对象数组
const array = [
{ home1: "05:45", dayOfWeek: 1, away: "09:30"},
{ home1: "05:15", dayOfWeek: 2, away: "09:30"},
{ home1: "17:30", dayOfWeek: 5, away: "09:30"},
{ home1: "16:30", dayOfWeek: 7, away: "09:30"}
]
我有四个dayOfWeek
(1,2,5,7)。现在我需要用虚拟对象 ( ) 推动剩余的三个 (3,4,6 { home1: "05:30", dayOfWeek: 7, away: "09:30"}
)
现在逻辑部分是我不知道dayOfWeek
数组中存在哪些。可能只有一个、两个、三个或空白。7
我每次都需要在那个数组中推送天数。
如何做到这一点?请建议我最好的方法
谢谢!!!
解决方案
一种选择是Set
到目前为止包含在数组中的日期中,然后从 1 迭代到 7,push
如果该日期不包含在集合中,则将新对象添加到数组中:
const array = [
{ home1: "05:45", dayOfWeek: 1, away: "09:30"},
{ home1: "05:15", dayOfWeek: 2, away: "09:30"},
{ home1: "17:30", dayOfWeek: 5, away: "09:30"},
{ home1: "16:30", dayOfWeek: 7, away: "09:30"}
];
const dummy = { home1: "05:30", away: "09:30" };
const days = new Set(array.map(({ dayOfWeek }) => dayOfWeek));
for (let i = 1; i <= 7; i++) {
if (!days.has(i)) array.push({ ...dummy, dayOfWeek: i });
}
console.log(array);
我使用 aSet
来降低复杂性,但我想如果您只需要 7 个对象,那没关系,您可以使用find
而不事先创建集合
const array = [
{ home1: "05:45", dayOfWeek: 1, away: "09:30"},
{ home1: "05:15", dayOfWeek: 2, away: "09:30"},
{ home1: "17:30", dayOfWeek: 5, away: "09:30"},
{ home1: "16:30", dayOfWeek: 7, away: "09:30"}
];
const dummy = { home1: "05:30", away: "09:30" };
for (let i = 1; i <= 7; i++) {
if (!array.find(({ dayOfWeek }) => dayOfWeek === i)) {
array.push({ ...dummy, dayOfWeek: i });
}
}
console.log(array);
推荐阅读
- python - 屏蔽矩阵中的零值并使用索引重建原始矩阵
- javascript - 一个 IF Javascript 中的 AND 和 OR
- windows - gMSA 可以在受信任的域之间使用吗?
- python - 让 sphinx-build 引发异常以便 IDE 可以捕获它们?
- r - 如何使用 {tabular} 在 Rmarkdown 中设置表格
- python - 跨两个应用程序的相同 Flask 登录会话
- kubernetes - 在 yaml 文件中将连接字符串作为环境变量传递
- python-3.x - Python Salesforce API 身份验证
- css - 如何将多行列表中的最后一项居中,保持每行的高度和相同的间隙?
- java - 如何从头开始创建对象的 LinkedList(不使用 java 的 API)