问题与迭代
我有一个对象如下:问题与迭代
{ monday: { close: '10:30 PM', open: '07:30 AM' },
tuesday: { close: '07:00 PM', open: '11:00 AM' },
wednesday: { close: '05:30 AM', open: '11:00 AM' },
thursday: { close: '11:00 PM', open: '06:00 AM' },
friday: { close: '01:00 AM', open: '01:30 AM' },
saturday: { close: '07:30 PM', open: '11:00 AM' },
sunday: { close: 'Closed', open: 'Closed' } }
我想遍历这个和填充数组。
//获取操作
Space.getSpaceById(req.body.spaceId, function (error, space) {
if (error)
throw error;
var hours = space.hoursOfOperation;
Object.keys(hours).forEach(function(key) {
console.log(hours[key]);
hoursArray.push({open: hours[key].open, closed: hours[key].close})
});
}
我getSpaceById方法的时间..
module.exports.getSpaceById = function (id, callback) {
Space.findOne({_id: id}, callback);
};
我一直在打。开和.close时收到错误
我小时对象在mongoDB中声明此为
hoursOfOperation: {
monday: {open: String, close: String},
tuesday: {open: String, close: String},
wednesday: {open: String, close: String},
thursday: {open: String, close: String},
friday: {open: String, close: String},
saturday: {open: String, close: String},
sunday: {open: String, close: String}
}
我粘贴在JSBin的代码,并提出了一些修改,这工作得很好,在不改变很多你的代码:
var hours = { monday: { close: '10:30 PM', open: '07:30 AM' },
tuesday: { close: '07:00 PM', open: '11:00 AM' },
wednesday: { close: '05:30 AM', open: '11:00 AM' },
thursday: { close: '11:00 PM', open: '06:00 AM' },
friday: { close: '01:00 AM', open: '01:30 AM' },
saturday: { close: '07:30 PM', open: '11:00 AM' },
sunday: { close: 'Closed', open: 'Closed' } };
var hoursArray = [];
Object.keys(hours).forEach(function(key) {
console.log(hours[key]);
hoursArray.push({open: hours[key].open, closed: hours[key].close});
});
console.log('----HoursArray here:----');
console.log(hoursArray);
我仍然得到相同的错误typeError:无法读取属性'打开'未定义 – unconditionalcoder
当我宣布小时,因为你在做以上,它的工作原理。但是,当我从我的数据库将hoursOfOperation设置为几小时时,它不起作用。即使是我在检索hoursOfOperation就好了 – unconditionalcoder
{monday:{close:'10:30 PM',open:'07:30 AM'}, 星期二:{close:'07:00 PM',open:'11: 00 AM'}, 星期三:{close:'05:30 AM',open:'11:00 AM'}, 星期四:{close:'11:00 PM',open:'06:00 AM'} , 周五:{close:'01:00 AM',open:'01:30 AM'}, 周六:{close:'07:30 PM',open:'11:00 AM'}, 周日: {关闭:'关闭',打开:'关闭'}} – unconditionalcoder
只需使用换的结构。
for (var key in foo) {
if (foo.hasOwnProperty(key)) {
var hours = foo[key];
console.log(hours.close + " " + hours.open);
}
}
控制台登录呢? –
当我尝试代码时,我没有得到任何错误。你得到了什么确切的错误? – Guffa
'forEach'有更多参数吗?你究竟“打电话”打开和关闭? – adeneo