我想知道如何以更清洁和最佳的方式执行此操作:

我有一个具有以下结构的对象:

{
   "125": 2,
   "439": 3,
   "560": 1,
   "999": 2,
   ...
}


我想创建一个平面数组,该数组重复每个键,其值指示的次数。以及将键(字符串)转换为整数的奖励积分。在此示例中,结果数组应为:

[ 125, 125, 439, 439, 439, 560, 999, 999 ]


我尝试了几种方法,但是它们看起来都过度设计。当然,有一种更简单的方法。
这是我在下划线处得到的(它返回一个字符串数组,也不是整数):

_.compact(_.flatten(_.map(files, function(num, id) {
     return new Array(num+1).join('$'+id).split('$')
})))


我知道有很多方法可以做到这一点。我只想要一种干净快捷的方法。作为Ruby开发人员,可能很容易:

> files = {"125" => 2, "439" => 3, "560" => 1, "999" => 2}
 => {"125"=>2, "439"=>3, "560"=>1, "999"=>2}
> files.map {|key, value| [key.to_i] * value}.flatten
 => [125, 125, 439, 439, 439, 560, 999, 999]


提前致谢。

最佳答案

尝试这个:

var obj = {
   "125": 2,
   "439": 3,
   "560": 1,
   "999": 2
}

var arr = [];

for (prop in obj) {
    for (var i = 0; i < obj[prop]; i++)
        arr.push(parseInt(prop));
}

09-11 10:23