同时映射和过滤数组-问答-阿里云开发者社区-阿里云

开发者社区> 问答> 正文

同时映射和过滤数组

保持可爱mmm 2020-02-07 22:57:33 63

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

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

分享到
取消 提交回答
全部回答(1)
  • 保持可爱mmm
    2020-02-07 22:57:46

    您应该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; }, []);

    0 0
云计算
使用钉钉扫一扫加入圈子
+ 订阅

时时分享云计算技术内容,助您降低 IT 成本,提升运维效率,使您更专注于核心业务创新。

推荐文章