fou*_*deg 30 javascript underscore.js
我试图_.map在对象数组上使用underscore.js 函数,以获得具有每个对象的属性的数组.这是通常的情况,所以:
var finalArray = _.map(myArray, function(obj) {
return obj.myProperty;
});
Run Code Online (Sandbox Code Playgroud)
但在某些情况下,我需要在数组中添加任何内容.它可能是这样的:
var finalArray = _.map(myArray, function(obj) {
if (!obj.ignore) {
return obj.myProperty;
}
});
Run Code Online (Sandbox Code Playgroud)
结果是一个undefined值被推入数组,这与不推送任何东西是不一样的.
有没有办法使地图功能不推送值,或者我是否需要对我进行后期处理finalArray以删除不需要undefined的值?
cou*_*tos 28
你应该在_.map()之前使用_.filter()
var filteredArray = _.filter(myArray,function(obj) {
return !obj.ignore;
});
var finalArray = _.map(filteredArray, function(obj) {
return obj.myProperty;
});
Run Code Online (Sandbox Code Playgroud)
Tho*_*ann 28
你可以使用reduce:
myArray.reduce(function (acc, obj) {
if (!obj.ignore) {
acc.push(obj.myProperty);
}
return acc;
}, []);
Run Code Online (Sandbox Code Playgroud)
或者用lodash:
_.reduce(myArray, function (acc, obj) {
if (!obj.ignore) {
acc.push(obj.myProperty);
}
return acc;
}, []);
Run Code Online (Sandbox Code Playgroud)
Pav*_*vlo 12
这可以单独使用Underscore方法完成,无点样式:
var finalArray = _.chain(myArray)
.reject('ignore')
.pluck('myProperty')
.value();
Run Code Online (Sandbox Code Playgroud)
.map将为数组映射一个新值,您可以使用它.filter来过滤数组.您可以使用FYI .pluck从对象映射属性:
_.chain(myArray).filter(function(obj) { return !obj.ignore; }).pluck('myProperty').value();
Run Code Online (Sandbox Code Playgroud)
你也可以.where像这样使用:
_.chain(myArray).where({ignore: false}).pluck('myProperty').value();
Run Code Online (Sandbox Code Playgroud)
要么:
_.pluck(_.where(myArray, {ignore: false}), 'myProperty');
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
37270 次 |
| 最近记录: |