代码之家  ›  专栏  ›  技术社区  ›  prgrmr

使用下划线映射获取对象的前N个属性

  •  -1
  • prgrmr  · 技术社区  · 8 年前

    我有一个对象,希望使用下划线获得前n个项目(映射/每个项目)

    代码如下:

    var input = {
      a:1,
      b:2,
      c:3,
      d:4
    }
    
    _.map(input, function (value, key, index) {
      if(index < 2) {
        console.log(key + ' == ' + value)
      }
    });
    

    输出应该像[{a:1},{b:2}…]

    2 回复  |  直到 8 年前
        1
  •  1
  •   Gruff Bunny    8 年前

    您可以使用 keys first 然后使用 pick 要获取这些密钥:

    let result = _.pick(input, _.first(_.keys(input), 2 ))
    
        2
  •  1
  •   marc_s MisterSmith    6 年前

    纯ES6解决方案,没有下划线/Lodash:

    const cutObject = (obj, max) => Object.keys(obj)
      .filter((key, index) => index < max)
      .map(key => ({[key]: obj[key]}));
    
    console.log(cutObject({a:1, b:2, c:3, d:4, e:5}, 3)); // [{a:1}, {b:2}, {c:3}]
    

    但你也应该知道 Object.keys 不保证特定订单。它按属性原始插入到对象中的顺序返回对象的键数组。这取决于JavaScript引擎的实现,因此如果顺序真的很重要,最好使用数组。

    推荐文章