我有一个要迭代的对象数组,以生成一个新的过滤数组。但是,我还需要根据参数从新数组中过滤出一些对象。我试着这样做:
function renderOptions(options) {
return options.map(function (option) {
if (!option.assigned) {
return (someNewObject);
}
});
}
这是一种好的方法吗?有没有更好的方法?我对使用任何库都是开放的,比如lodash。
发布于 2015-12-21 22:52:22
使用reduce,Luke!
function renderOptions(options) {
return options.reduce(function (res, option) {
if (!option.assigned) {
res.push(someNewObject);
}
return res;
}, []);
}
发布于 2017-06-14 19:59:20
使用ES6,您可以非常简短地完成此操作:
options.filter(opt => !opt.assigned).map(opt => someNewObject)
发布于 2018-04-26 21:22:30
这里有一行带有ES6花式spread syntax的reduce
!
var options = [
{ name: 'One', assigned: true },
{ name: 'Two', assigned: false },
{ name: 'Three', assigned: true },
];
const filtered = options
.reduce((result, {name, assigned}) => [...result, ...assigned ? [name] : []], []);
console.log(filtered);
https://stackoverflow.com/questions/34398279
复制相似问题