我有一个要迭代的对象数组,以生成一个新的过滤后的数组。但是,我还需要根据参数从新数组中滤除一些对象。我正在尝试:
function renderOptions(options) { return options.map(function (option) { if (!option.assigned) { return (someNewObject); } });
} 那是一个好方法吗?有没有更好的方法?我愿意使用lodash之类的任何库。 问题来源于stack overflow
您应该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);
另外,减速器可以是一个纯函数,像这样
var reduced = options.reduce(function(result, option) { if (option.assigned) { return result.concat({ name: option.name, newProperty: 'Foo' }); } return result; }, []);
版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。