Javascript 基于另一个数组中的值从数组中删除对象
我正在尝试创建一个包含7个对象的数组(每天一个)。这个想法是创造7天的营业时间 最终的词典如下:Javascript 基于另一个数组中的值从数组中删除对象,javascript,arrays,Javascript,Arrays,我正在尝试创建一个包含7个对象的数组(每天一个)。这个想法是创造7天的营业时间 最终的词典如下: const storeHours = { monday: { startTime: mondayTime1, endTime: mondayTime1 }, tuesday: { startTime: new Date(), endTime: new Date() }, wednesday: { startTime: new Date(), endTime
const storeHours = {
monday: { startTime: mondayTime1, endTime: mondayTime1 },
tuesday: { startTime: new Date(), endTime: new Date() },
wednesday: { startTime: new Date(), endTime: new Date() },
// other days ...
};
newDict = {
monday: { startTime: mondayTime1, endTime: mondayTime1 },
}
我有7个复选框,每天一个
单击复选框时,它将选中的项存储在一个数组中
checkedValues = ["Friday", "Saturday"]
我可以使用这个checkedValues项来知道在newDict中创建哪个条目
像这样:
const storeHours = {
monday: { startTime: mondayTime1, endTime: mondayTime1 },
tuesday: { startTime: new Date(), endTime: new Date() },
wednesday: { startTime: new Date(), endTime: new Date() },
// other days ...
};
newDict = {
monday: { startTime: mondayTime1, endTime: mondayTime1 },
}
当我点击第二个复选框时,newDict应该有当天的新条目,以此类推
当我取消选中复选框时,我还必须从这个字典中删除条目,所以复选框和字典都保持同步
当项目未选中时,如何从字典中删除条目
整个想法基本上是使用7个对象的字典在数据库中存储小时数。我不确定您在这里想要实现什么,请编辑您的问题以使其更清楚。因此,据我所知,这里有一个可能的解决办法 1.把你的词条存到字典里 正如您的代码现在所示,
finalArray
是一个数组,其中包含一个用于存储条目的字典。这是低效的,只需使用字典:
finalDict = {
Friday: {startTime: startTime},
Saturday: {endTime: endTime}
}
因为它不是一个数组,而是一个字典,所以我对它进行了相应的重命名以避免混淆
2.将条目设置为null
使用字典最酷的一点是,你可以通过名字引用条目。因此,如果标记了Saturday
,则需要简化:
finalDict.Saturday = null;
或:
完成此操作后,词典将具有以下值:
{
Friday: {startTime: startTime},
Saturday: null
}
假设您仍然拥有带有
checkedValues
的数组,您可以使用.filter()
然后使用.reduce()
只保留checkedValues
的天数。此外,您还可以使用Object.keys()
,它将返回storeHours
的键的名称
const checkedValues=[“星期一”、“星期二”];
常数存储小时={
星期一:{开始时间:1,结束时间:3},
星期二:{startTime:new Date(),endTime:new Date()},
星期三:{startTime:new Date(),endTime:new Date()},
//其他日子。。。
};
const newDict=Object.key(存储小时)
.filter(天=>checkedValues.includes(天))
.reduce((对象,键)=>{
obj[键]=存储小时数[键];
返回obj;
}, {});;
console.log(newDict)
使用数组。filter
finalArray
不是数组:您创建了一个包含单个词典的数组,并且在词典中保存了条目。这似乎效率低下。只需创建一个字典,删除方括号:finalArray={…}
您是否仍然有checkedValues
?是的,我仍然有保存选中项的checkedValues数组。