【发布时间】:2016-06-12 19:55:56
【问题描述】:
我不确定这是否是正确的方法,但我很好奇它是否可以做到。我有一个对象,我需要从中创建一个数组,键是项,值 id 是它在数组中重复的次数。
const arrayInstructions = {
'm': 5,
's': 5,
'p': 5
}
应该是['m','m','m','m','m','s','s' ... ]
这是工作方法:
var array = []
Object.keys(arrayInstructions).forEach(function (agenda) {
array = array.concat( _.fill(Array(arrayInstructions[agenda]), agenda) )
})
可以这样做吗:
var deck = Object.keys(streamDeck).map(function (agenda) {
var partial = _.fill(Array(streamDeck[agenda]), agenda)
return ...partial // I know this is wrong
})
【问题讨论】:
-
不,不能。您正在寻找
concatMap(JS 没有)。 -
考虑
Object.keys(obj).reduce((s,k) => s+k.repeat(obj[k]), '').split('')。它做了无用的字符串连接,但很短。
标签: javascript arrays dictionary spread-syntax