我想增加每周的几天和每天的时段,即早晨,下午,傍晚和夜晚的值,因为我迭代一个集合,我得到时间,然后评估时间在哪个时间段。 我需要能够在前端迭代最终结果,但想要一个更好的解决方案,我目前所代表的那个,但总数数组。有人建议我使用地图但不确定如何用地图实现这个。
removeArrangedSubview()
我们非常感谢任何建议。
答案 0 :(得分:1)
我设计数据结构的方法之一如下 - 请参阅带有输入,输出和总计算方法的演示:
var slots={'Monday':{'Morning':0,'Afernoon':0,'Evening':0,'Night':0},'Tuesday':{'Morning':0,'Afernoon':0,'Evening':0,'Night':0},'Wednessday':{'Morning':0,'Afernoon':0,'Evening':0,'Night':0},'Thursday':{'Morning':0,'Afernoon':0,'Evening':0,'Night':0},'Friday':{'Morning':0,'Afernoon':0,'Evening':0,'Night':0},'Saturday':{'Morning':0,'Afernoon':0,'Evening':0,'Night':0},'Sunday':{'Morning':0,'Afernoon':0,'Evening':0,'Night':0},}
// input data
function insertSlotFor(day, slot) {
slots[day][slot]++;
}
// output data
function getSlotFor(day, slot) {
return slots[day][slot];
}
// get total for a day
function totalForDay(day) {
return Object.keys(slots[day]).reduce(function(prev,curr){
return prev + slots[day][curr];
},0);
}
// get total for a slot
function totalForSlot(slot) {
return Object.keys(slots).reduce(function(prev,curr){
return prev + slots[curr][slot];
},0);
}
insertSlotFor('Monday', 'Morning');
insertSlotFor('Monday', 'Night');
insertSlotFor('Tuesday', 'Morning');
console.log(slots);
console.log(totalForDay('Monday'));
console.log(totalForSlot('Morning'));

.as-console-wrapper{top:0;max-height:100%!important;}

答案 1 :(得分:0)
您需要定义一个对象,例如DayOfWeek
,并且该对象中的方法将执行所有逻辑。这将封装逻辑并使代码管理变得更容易。然后,您的数组将保存该对象的实例,您只需通过索引(dayOfWeek
)引用对象并调用方法来获取总数。
您的getLocalDate()
函数应按照其说法执行操作 - 获取数据,而不是在项目中设置任何内容(即timeslotId
)。这令人困惑并且混淆了责任。它可以是DayOfWeek
对象的一种方法,其构造函数将获取一个项目并根据需要返回值。