1.多条件筛选数组

1.1代码注解版

对代码进行注解说明。

/**
 * 多条件筛选函数,根据指定条件对象 filters 对数据 data 进行过滤。
 * @param {Array} data - 待筛选的数据数组。
 * @param {Object} filters - 筛选条件对象,键为筛选字段,值为筛选条件。
 * @returns {Array} 符合所有筛选条件的数据子集。
 */
export const multiFilter = (data, filters) => {
    // 使用 Array.prototype.filter 方法对数据进行筛选
    return data.filter(item => {
        // 遍历 filters 对象的每一个键
        for (let key in filters) {
            // 如果数据项的对应字段值不等于筛选条件值,则直接返回 false
            if (item[key] !== filters[key]) {
                return false;
            }
        }
        // 如果所有条件都匹配,则返回 true,保留该数据项
        return true;
    });
};

1.2代码纯净版

无任何注解,方便直接复制使用。

export const multiFilter = (data, filters) => {
    return data.filter(item => {
        for (let key in filters) {
            if (item[key] !== filters[key]) {
                return false;
            }
        }
        return true;
    });
};

1.3使用案例

(1)示例数据
const users = [
  { name: 'Alice', age: 25, city: '南宁' },
  { name: 'Bob', age: 30, city: '北京' },
  { name: 'Charlie', age: 28, city: '杭州' },
  { name: 'David', age: 22, city: '深圳' },
  { name: 'Eve', age: 32, city: '北京' }
];
(2)使用实例及打印结果

示例 1: 按照姓名为 'Alice' 和城市为 '南宁' 进行筛选

const filters1 = { name: 'Alice', city: '南宁' };
const filteredUsers1 = multiFilter(users, filters1);
console.log('筛选结果 1:', filteredUsers1);

筛选结果 1: [{ name: 'Alice', age: 25, city: '南宁 }]

注解: 返回符合姓名为 'Alice' 和城市为 '南宁' 条件的用户对象数组。


示例 2: 筛选所有住在 '北京' 的用户

const filters2 = { city: '北京' };
const filteredUsers2 = multiFilter(users, filters2);
console.log('筛选结果 2:', filteredUsers2);

筛选结果 2: [ { name: 'Bob', age: 30, city: 北京' }, { name: 'Eve', age: 32, city: '北京' } ]

注解: 返回所有住在 '北京' 的用户对象数组。

2.单条件筛选数组

根据指定属性和值对数组进行筛选

2.1代码注解版

/**
 * 根据指定的属性和值对数组进行筛选
 * @param {Array} data - 要筛选的数组
 * @param {string} property - 对象的属性名,用于筛选
 * @param {any} value - 属性值,用于与属性进行比较
 * @returns {Array} - 筛选后的数组,包含符合条件的对象
 */
export const filterByProp = (data, property, value) => {
    // 使用数组的 filter 方法对 data 进行筛选
    return data.filter(item => item[property] === value);
};

2.2代码纯净版

export const filterByProp = (data, property, value) => {
	return data.filter(item => item[property] === value);
}
2.3使用案例
(1)示例数据
const users = [
  { name: 'Alice', age: 25, city: '南宁' },
  { name: 'Bob', age: 30, city: '北京' },
  { name: 'Charlie', age: 28, city: '杭州' },
  { name: 'David', age: 22, city: '深圳' },
  { name: 'Eve', age: 32, city: '北京' }
];
(2)使用案例及打印结果

示例 1: 按照年龄为 25 岁进行筛选

const filteredUsers1 = filterByProp(users, 'age', 25);
console.log('筛选结果 1:', filteredUsers1);

筛选结果 1: [{ name: 'Alice', age: 25, city: '南宁' }]

注解: 返回所有年龄为 25 岁的用户对象数组。


示例 2: 只筛选城市为 '北京' 的用户

const filteredUsers2 = filterByProp(users, 'city', '北京');
console.log('筛选结果 2:', filteredUsers2);

筛选结果 2: [ { name: 'Bob', age: 30, city: '北京' }, { name: 'Eve', age: 32, city: '北京' }  ]

注解: 返回所有城市为 '北京' 的用户对象数组。

更多推荐