2016-04-03 159 views
-2

我有一个对象如下:问题与迭代

{ 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} 
    } 
+0

控制台登录呢? –

+0

当我尝试代码时,我没有得到任何错误。你得到了什么确切的错误? – Guffa

+0

'forEach'有更多参数吗?你究竟“打电话”打开和关闭? – adeneo

回答

0

我粘贴在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); 

JSBIN

+0

我仍然得到相同的错误typeError:无法读取属性'打开'未定义 – unconditionalcoder

+0

当我宣布小时,因为你在做以上,它的工作原理。但是,当我从我的数据库将hoursOfOperation设置为几小时时,它不起作用。即使是我在检索hoursOfOperation就好了 – unconditionalcoder

+0

{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

0

只需使用换的结构。

for (var key in foo) { 
    if (foo.hasOwnProperty(key)) { 
     var hours = foo[key]; 
     console.log(hours.close + " " + hours.open); 
    } 
} 

Working JSFiddle