Javascript 对象键未按预期填充
请参见下面的对象结构。我试图将每个日期和一天中30分钟半小时间隔的固定数组进行比较,然后创建一个新对象,其中“handled”由Javascript 对象键未按预期填充,javascript,jquery,oop,Javascript,Jquery,Oop,请参见下面的对象结构。我试图将每个日期和一天中30分钟半小时间隔的固定数组进行比较,然后创建一个新对象,其中“handled”由 平日 半小时间隔 下面的内容确实映射到了“hhObj”中的正确时间间隔,但它只是每半小时聚合一次,然后在每个“工作日”重复 //我要构建的主对象数组 var hhObj = []; //一天中所有半小时间隔的固定数组 var halfHours = ["00:00", "00:30", "01:00", "01:30", "02:00", "02:30", "03:
var hhObj = [];
//一天中所有半小时间隔的固定数组
var halfHours = ["00:00", "00:30", "01:00", "01:30", "02:00", "02:30", "03:00", "03:30", "04:00", "04:30", "05:00", "05:30", "06:00", "06:30", "07:00", "07:30", "08:00", "08:30", "09:00", "09:30", "10:00", "10:30", "11:00", "11:30", "12:00", "12:30", "13:00", "13:30", "14:00", "14:30", "15:00", "15:30", "16:00", "16:30", "17:00", "17:30", "18:00", "18:30", "19:00", "19:30", "20:00", "20:30", "21:00", "21:30", "22:00", "22:30", "23:00", "23:30"]
//为每半小时的间隔创建具有密钥对值的对象
var intervalObj = [];
for (i = 0; i < halfHours.length; i++) {
intervalObj.push({
interval: halfHours[i],
answered: 0,
handled: 0
})
}
当前结果(已处理的结果求和,但在所有工作日的相同时间间隔内复制):
你能澄清一下你到底想要什么吗?我看了一眼,不知道你期望结果是什么。也许您可以提供更多信息:-)我在上面的代码中添加了预期的输出
for (i = 1; i <= 5; i++) {
hhObj.push({
day: i,
data: intervalObj
})
}
var test = [
{"DateTime":"5/1/18 03:00:00 AM","Answered":"0","handled":"3"},
{"DateTime":"5/3/18 10:00:00 AM","Answered":"0","handled":"1"},
{"DateTime":"5/2/18 07:00:00 AM","Answered":"0","handled":"25"},
{"DateTime":"5/5/18 12:00:00 AM","Answered":"0","handled":"2"},
{"DateTime":"5/10/18 12:00:00 AM","Answered":"0","handled":"6"},
{"DateTime":"5/12/18 07:00:00 AM","Answered":"0","handled":"1"},
{"DateTime":"5/13/18 12:00:00 AM","Answered":"0","handled":"12"},
{"DateTime":"5/1/18 07:00:00 AM","Answered":"0","handled":"5"},
{"DateTime":"5/6/18 10:00:00 AM","Answered":"0","handled":"1"},
{"DateTime":"5/7/18 12:00:00 AM","Answered":"0","handled":"2"},
{"DateTime":"5/3/18 12:00:00 AM","Answered":"0","handled":"0"},
{"DateTime":"5/18/18 06:00:00 AM","Answered":"0","handled":"14"},
{"DateTime":"5/12/18 12:30:00 AM","Answered":"0","handled":"1"}]
for (row in test) {
var dt = test[row].DateTime;
dt = new Date(dt)
var weekDay = parseInt(dt.getDay());
let hh = dt.getHours();
if(hh < 10) {
hh = '0' + hh
}
let mm = dt.getMinutes();
if(mm == 0) {
mm = '0' + mm;
}
var timeInterval = hh + ':' + mm;
var answered = parseInt(test[row].CallsAnswered);
var handled = parseInt(test[row].handled);
for(i = 0; i < 5; i++) {
for(int in hhObj[i].data) {
if(weekDay == hhObj[i].day && hhObj[i].data[int].interval == timeInterval) {
var idx = parseInt(hhObj[i].day) - 1;
hhObj[idx].data[int].handled += parseInt(test[row].handled);
}
}
}
}
hhObj = [{
day: 1,
data: [{
interval: "00:00",
handled: 10
},
{
interval: "00:30",
handled: 5
}....]
},
{
day: 2,
data: [{
interval: "00:00",
handled: 2
},
{
interval: "00:30",
handled: 0
}....]
}....]
hhObj = [{
day: 1,
data: [{
interval: "00:00",
handled: 12
},
{
interval: "00:30",
handled: 5
}....]
},
{
day: 2,
data: [{
interval: "00:00",
handled: 12
},
{
interval: "00:30",
handled: 5
}....]
}....]