编程语言
首页 > 编程语言> > javascript-下划线基于对象键创建数组

javascript-下划线基于对象键创建数组

作者:互联网

假设我有一个这样的js对象

{
    a: 5,
    b: 1,
    c: 3
}

我想使用Underscore做的是生成一个类似于以下内容的数组;

["a","a","a","a","a","b","c","c","c"]

我可以用以下代码实现我想要的

var i = {
    a: 5,
    b: 1,
    c: 3
};

unpack = function (i, item) {
    var items = [];
    _.range(0, i).forEach(function (i) {
        items.push(item)
    })
    return items;
}

console.log(_.flatten(_.map(i, unpack)));

http://jsfiddle.net/VCFZx/,但这似乎不是最简洁的方法吗?

解决方法:

这个怎么样:

var obj = 
{
a :5,
b : 1,
c : 3
};

console.log( 
  _.flatten(_.map(_.keys(obj), function (key) {
      return _.times(obj[key], function() { return key; });  
  }))
);

http://jsfiddle.net/J6bqb/

请注意,此解决方案仅是功能性的.

这是一个链接良好的版本:

  _.chain(_.keys(obj))
    .map(function (key) {
      return _.times(obj[key], function() { return key; });  })
    .flatten()
    .value()

标签:underscore-js,javascript
来源: https://codeday.me/bug/20191029/1962755.html