使用Underscore Map获取Object的前N个属性

时间:2017-10-19 21:50:17

标签: javascript list loops underscore.js

我有一个对象,并希望使用下划线(地图/每个任何东西)获得前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 个答案:

答案 0 :(得分:1)

Pure ES6解决方案,没有Underscore / 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引擎的实现,因此如果订单非常重要,它会优先使用数组。

答案 1 :(得分:1)

您可以使用keysfirst获取前2个密钥的名称,然后使用pick获取这些密钥:

let result = _.pick(input, _.first(_.keys(input), 2 ))