2016-12-05 39 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方法。