2016-04-03 152 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