Underscore.js _.map函数:跳过一个值

内容来源于 Stack Overflow,并遵循CC BY-SA 3.0许可协议进行翻译与使用

  • 回答 (2)
  • 关注 (0)
  • 查看 (35)

我试图_.map在一个对象数组上使用underscore.js 函数来获取一个包含每个对象属性的数组。这是通常的情况,所以:

var finalArray = _.map(myArray, function(obj) {
    return obj.myProperty;
});

但在某些情况下,我需要在数组中添加任何内容。它可能是这样的:

var finalArray = _.map(myArray, function(obj) {
    if (!obj.ignore) {
        return obj.myProperty;
    }
});

这样做的结果是一个undefined值被推入数组中,这与推动任何内容不同。

有没有一种方法让地图功能不推送值,还是我需要后处理我finalArray的删除不需要undefined的?

提问于
用户回答回答于

你应该在_.map()之前使用_.filter()

var filteredArray = _.filter(myArray,function(obj) {
     return !obj.ignore;
});

var finalArray = _.map(filteredArray, function(obj) {
    return obj.myProperty;
});
用户回答回答于

你可以使用reduce:

myArray.reduce(function (acc, obj) {
    if (!obj.ignore) {
        acc.push(obj.myProperty);
    }
    return acc;
}, []);

或与lodash:

_.reduce(myArray, function (acc, obj) {
  if (!obj.ignore) {
    acc.push(obj.myProperty);
  }
  return acc;
}, []);

扫码关注云+社区

领取腾讯云代金券