Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/arrays/12.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 基于另一个数组中的值从数组中删除对象_Javascript_Arrays - Fatal编程技术网

Javascript 基于另一个数组中的值从数组中删除对象

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

我正在尝试创建一个包含7个对象的数组(每天一个)。这个想法是创造7天的营业时间

最终的词典如下:

    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数组。