【问题标题】:Chunking Objects in functional style (Underscore/Lodash)功能风格的分块对象(下划线/Lodash)
【发布时间】:2015-07-31 16:39:01
【问题描述】:

Lodash 有一个很好的 chunk 数组方法;对象(关联数组)是否有等价物?命令式解决方案非常简单,但我只是好奇是否有更简洁的功能实现?

强制解决方案:
将对象作为输入
返回具有size 个属性的对象数组

var chunk = function(input, size){
  var obj = {};
  var output = [];
  var counter = 0;
  for (var k in input) {
    if(!input.hasOwnProperty(k)){
      continue;
    }
    obj[k] = input[k];
    if (++counter % size === 0) {
      output.push(obj);
      obj = {};
    }
  }
  if (Object.keys(obj).length !== 0){
    output.push(obj);
  }
  return output;
};

【问题讨论】:

  • 也许你可以使用_.pairs,然后是chunk,最后是_.object

标签: javascript functional-programming lodash


【解决方案1】:
_.mixin({"chunkObj": function(input, size) {
    return _.chain(input).pairs().chunk(size).map(_.object).value();
}});

console.log(_.chunkObj({a:1,b:2,c:3,d:4,e:5}, 2))

【讨论】:

  • 谢谢!除了我试图使用 indexBy 之外,我几乎有同样的事情。所以_.object类似于_.partial(_.indexBy, _, 0)?
  • 只想添加,当前的lodash变成return _.chain(input).toPairs().chunk(size).map(_.fromPairs).value()
猜你喜欢
  • 1970-01-01
  • 2019-09-30
  • 1970-01-01
  • 1970-01-01
  • 2015-12-09
  • 2021-01-06
  • 1970-01-01
  • 1970-01-01
  • 2023-01-20
相关资源
最近更新 更多