JavaScript 中基于多个过滤条件简化对象数组
问题:
如何实现我可以在 JavaScript 中根据多个过滤条件简化对象数组吗?例如,使用以下数组:
var users = [ { name: 'John', email: '[email protected]', age: 25, address: 'USA' }, { name: 'Tom', email: '[email protected]', age: 35, address: 'England' }, { name: 'Mark', email: '[email protected]', age: 28, address: 'England' } ];
和过滤器对象:
var filter = { address: 'England', name: 'Mark' };
我想按地址和名称过滤所有用户。目前,我的函数在第一次迭代中添加具有匹配地址的所有用户,并在第二次迭代中仅添加最后一个具有匹配名称的用户。但是,我需要同时按两个条件进行过滤。
答案:
要根据多个条件过滤对象数组,可以使用以下方法:
users = users.filter(function(item) { for (var key in filter) { if (item[key] === undefined || item[key] != filter[key]) return false; } return true; });
此代码迭代对象数组和过滤器对象,确保数组中的每个对象都匹配过滤器中指定的所有条件。 item[key]和filter[key]比较检查对象item中的属性key的值是否与过滤器对象中的相应值匹配。如果任何条件失败,过滤器函数将返回 false,从过滤结果中排除该对象。否则,返回true,表示该对象满足所有过滤条件。
通过应用这种方法,您可以根据多个条件有效过滤对象数组,确保只有满足所有条件的对象包含在结果中。
以上是如何在 JavaScript 中通过多个条件过滤对象数组?的详细内容。更多信息请关注PHP中文网其他相关文章!