”工欲善其事,必先利其器。“—孔子《论语.录灵公》
首页 > 编程 > 如何根据多个条件过滤 JavaScript 对象数组?

如何根据多个条件过滤 JavaScript 对象数组?

发布于2024-11-08
浏览:425

How to Filter a JavaScript Array of Objects Based on Multiple Conditions?

基于多个条件过滤JavaScript中的数组

问题陈述

给定一个对象数组和一个过滤器对象,目标是过滤和根据过滤器中指定的多个条件简化数组。但是,当过滤器包含多个属性时,会出现一个特定问题。

建议的解决方案

考虑以下代码段:

function filterUsers(users, filter) {
  var result = [];
  for (var prop in filter) {
    if (filter.hasOwnProperty(prop)) {
      // Iterate over the array
      for (var i = 0; i 

在建议的解决方案中,当过滤器包含多个属性时会出现问题。具体来说,在第二次迭代期间,users[i][prop] 和 filter[prop] 之间的比较不正确。为了解决这个问题,我们可以将代码修改为以下内容:

function filterUsers(users, filter) {
  var result = [];
  for (var prop in filter) {
    if (filter.hasOwnProperty(prop)) {
      // Apply filter on the array
      users = users.filter((user) => user[prop] === filter[prop]);
    }
  }
  return result;
}

在此版本中,我们利用数组内置的过滤方法来动态应用过滤条件。这可确保结果中仅包含满足所有指定条件的对象。

用法示例

使用更新的解决方案,过滤过程将按预期工作:

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'
};

var filteredUsers = filterUsers(users, filter);

console.log(filteredUsers); // Output: [{ name: 'Mark', email: '[email protected]', age: 28, address: 'England' }]

这个解决方案解决了多个过滤条件不适用的问题正确应用,确保生成的过滤数组准确反映指定的条件。

最新教程 更多>

免责声明: 提供的所有资源部分来自互联网,如果有侵犯您的版权或其他权益,请说明详细缘由并提供版权或权益证明然后发到邮箱:[email protected] 我们会第一时间内为您处理。

Copyright© 2022 湘ICP备2022001581号-3