lodash地图和选择

时间:2017-02-21 16:52:21

标签: javascript underscore.js lodash

给出一个数组

var test = [{a:1, b:2, c:3}, {a:4, b:5, c:6}, {a:7, b:8, c:9}]

如何使用lodash获取像[{b:2, c:3}, {b:5, c:6}, {b:8, c:9}]这样的新对象数组?

我试过_.map(test, _pick(???, ['b', 'c'])} 我应该在???中加入什么?

4 个答案:

答案 0 :(得分:6)

你需要将功能传递给地图,而使用ES6你可以使用这样的箭头功能。

var test = [{a:1, b:2, c:3}, {a:4, b:5, c:6}, {a:7, b:8, c:9}]

var result = _.map(test, e => _.pick(e, ['b', 'c']))
console.log(result)
<script src="https://cdnjs.cloudflare.com/ajax/libs/lodash.js/4.15.0/lodash.min.js"></script>

答案 1 :(得分:5)

与问题无关,这可以通过ES6轻松完成。

test.map(({ b, c }) => { 
  return { b, c }
});

答案 2 :(得分:1)

如果你不想要你也不需要使用lodash,如果你使用babel(es6)你可以使用解构来解决问题

&#13;
&#13;
var test = [{a:1, b:2, c:3}, {a:4, b:5, c:6}, {a:7, b:8, c:9}]

let newList = test.map(({b, c})=>{
 return {b,c}
});

document.body.append(JSON.stringify(newList));
&#13;
&#13;
&#13;

答案 3 :(得分:0)

_.chain(test).map(function(e){return _.pick(e, ['b','c'])}).value();