Lodash forEach功能省略

时间:2015-10-26 15:02:14

标签: javascript arrays object lodash

我的.js文件(节点)

中有一个对象
var z = [
    {'a': 'uno', 'b': 'dos'},
    {'a': 'uno', 'b': 'dos'},
    {'a': 'uno', 'b': 'dos'},
    {'a': 'uno', 'b': 'dos'}
];

我想从'a'对象中省略每个z

我尝试过这样的事情但是没有用。

var y = _.forEach(z, function(n){
    //console.log(_.omit(n, 'a'));
    return _.omit(n, 'a');
});

console.log(y);

我试着没有回头,但没有多少办法,但没有得到它。

我的jsfiddle链接:http://jsfiddle.net/baumannzone/jzs6n78m/

有任何帮助吗?干杯!

2 个答案:

答案 0 :(得分:3)

通过省略每个对象的a来创建一个新的对象数组

console.log(_.map(z, function (obj) {
  return _.omit(obj, 'a');
}));
// [ { b: 'dos' }, { b: 'dos' }, { b: 'dos' }, { b: 'dos' } ]

实际上,您省略并创建了一个新对象,但_.each忽略了该对象。现在,我们使用_.map,它将收集从函数返回的所有值并形成一个新数组。

如果你喜欢单行,请创建一个部分函数,​​只留下要用作_的对象,就像这样

console.log(_.map(z, _.partial(_.omit, _, 'a')));
// [ { b: 'dos' }, { b: 'dos' }, { b: 'dos' }, { b: 'dos' } ]

答案 1 :(得分:2)

var y = _.map(z, function(n) {
    return _.omit(n, 'a');
});

这将从旧数组创建一个新数组,将z中的对象映射到省略'a'属性的新对象。

另一种方法是使用链接,所以:

var y = _(z).map(function(n){return n.omit('a');}).value();