2016-12-05 41 views
2

我有一個像;Promise.map over object

{ '6': { stream: { twitch: [Object] } }, 
    '7': { stream: { twitch: [Object] } }, 
    '8': { stream: { twitch: [Object] } }, 
    '9': { stream: { twitch: [Object] } }, 
    '10': { stream: { twitch: [Object] } }, 
    '11': { stream: { twitch: [Object] } } } 

我想像它一樣遍歷它;

return Promise.map(myObj, function(minute, minuteIndex) { 

所以基本上分鐘應該保存數據,而minuteIndex應該保持索引。

我可以用lodash做,但藍鳥不能以某種方式。

_.forEach(hour.minutes, function(minute, minuteIndex) { 

我知道這段代碼在以前工作,但現在不能這樣做。

任何想法?

+0

爲什麼這是一個帶有數字鍵的對象?也許你應該使用數組呢? – Tomalak

+0

我不行。這是一種特殊的結構,用於在貓鼬身上持有每分鐘的數據統計。我需要這些索引。 – HuseyinUslu

+1

我不明白。一個數組有數字作爲鍵。你想要數字作爲關鍵。邏輯結論:使用數組。 – Tomalak

回答

4

您可以將對象的鍵映射到一個數組中,並把那個給Promise.map()

function process(stats) { 
    var statsArray = Object.keys(stats).map(key => ({ 
     minute: key, minuteIndex: stats[key] 
    })); 
    return Promise.map(statsArray, item => { 
     // work with item.minute & item.minuteIndex 
    }); 
} 

用法:

var twitchStats = { 
    '6': { stream: { twitch: [Object] } }, 
    '7': { stream: { twitch: [Object] } }, 
    '8': { stream: { twitch: [Object] } }, 
    '9': { stream: { twitch: [Object] } }, 
    '10': { stream: { twitch: [Object] } }, 
    '11': { stream: { twitch: [Object] } } 
}; 

process(twitchStats).then(result => { 
    // ... 
}); 
0

您也可以將對象轉換爲一個數組,使用_.toPairs,那麼你應該可以使用Promise.map方法。