开发者社区> 问答> 正文

同时映射和过滤数组

我有一个要迭代的对象数组,以生成一个新的过滤后的数组。但是,我还需要根据参数从新数组中滤除一些对象。我正在尝试:

function renderOptions(options) { return options.map(function (option) { if (!option.assigned) { return (someNewObject); } });
} 那是一个好方法吗?有没有更好的方法?我愿意使用lodash之类的任何库。 问题来源于stack overflow

展开
收起
保持可爱mmm 2020-02-07 22:57:33 311 0
1 条回答
写回答
取消 提交回答
  • 您应该Array.reduce为此使用。

    var options = [ { name: 'One', assigned: true }, { name: 'Two', assigned: false }, { name: 'Three', assigned: true }, ];

    var reduced = options.reduce(function(filtered, option) { if (option.assigned) { var someNewValue = { name: option.name, newProperty: 'Foo' } filtered.push(someNewValue); } return filtered; }, []);

    document.getElementById('output').innerHTML = JSON.stringify(reduced);

    Only assigned options

     
    另外,减速器可以是一个纯函数,像这样

    var reduced = options.reduce(function(result, option) { if (option.assigned) { return result.concat({ name: option.name, newProperty: 'Foo' }); } return result; }, []);

    2020-02-07 22:57:46
    赞同 展开评论 打赏
问答地址:
问答排行榜
最热
最新

相关电子书

更多
低代码开发师(初级)实战教程 立即下载
冬季实战营第三期:MySQL数据库进阶实战 立即下载
阿里巴巴DevOps 最佳实践手册 立即下载