【发布时间】:2015-06-12 13:33:13
【问题描述】:
我正在尝试在对象数组上使用 underscore.js _.map 函数,以获取具有每个对象属性的数组。这是通常的情况,所以:
var finalArray = _.map(myArray, function(obj) {
return obj.myProperty;
});
但在某些情况下,我需要在数组中添加 nothing。可能是这样的:
var finalArray = _.map(myArray, function(obj) {
if (!obj.ignore) {
return obj.myProperty;
}
});
这样做的结果是一个undefined值被推入数组,这和根本不推任何东西是不一样的。
有没有办法让 map 函数不推送值,或者我是否需要对我的 finalArray 进行后处理以删除不需要的 undefined?
【问题讨论】:
-
我认为您应该考虑选择 Thomas Eschemann 的最佳答案,因为它只循环一次数组的所有元素,如“有没有办法让 map 函数不推送值",这个问题的主要目标。答案是使用 reduce() 而不是 map()。
-
当前选择的答案是针对问题的第二部分“我需要对我的 finalArray 进行后处理以删除不需要的未定义的吗?”。第二部分的答案是:不,你不需要后处理 finalArray(),你需要使用 reduce() 而不是 map() 来避免后处理。