如何筛选符合多条件的客户对象数组?求方法指导
客户数组筛选方法指导
需要处理客户对象数组,返回符合任一以下条件的新数组,以下是每个条件的判断方法建议:
条件1:姓名首字母为大小写C
- 通过
customer.name[0]获取姓名首字符,用toLowerCase()或toUpperCase()统一大小写后,判断是否匹配目标字符 - 示例判断逻辑:
customer.name[0].toLowerCase() === 'c'
条件2:地址无undefined字段
- 地址为嵌套对象,需检查其下所有必填字段(如
street、city、zip、state)均不为undefined - 示例判断逻辑:
customer.address.street !== undefined && customer.address.city !== undefined && customer.address.zip !== undefined && customer.address.state !== undefined - 额外提示:若地址对象本身可能为
undefined,需先判断customer.address !== undefined
条件3:城市为Peoria且州为AZ
- 直接用点符号访问地址内的
city和state属性,同时满足两个相等判断 - 示例判断逻辑:
customer.address.city === 'Peoria' && customer.address.state === 'AZ'
条件4:会员等级为GOLD或PLATINUM,若年龄小于29则SILVER也符合
- 分两种场景判断:要么等级是GOLD/PLATINUM,要么等级是SILVER且年龄小于29
- 示例判断逻辑:
(customer.membershipLevel === 'GOLD' || customer.membershipLevel === 'PLATINUM') || (customer.membershipLevel === 'SILVER' && customer.age < 29)
整体筛选实现提示
- 使用
Array.filter()方法完成筛选(替代之前误用的Array.sort()),将所有条件用||连接作为筛选判断依据 - 全程用点符号访问对象属性,无需单独定义回调函数,直接在
filter参数中编写判断逻辑
客户对象数组结构参考
const customers = [ { name: 'Sam', address: { street: '1234 W Bell Rd', city: 'Phoenix', zip: '85308', state: 'AZ' }, membershipLevel: 'GOLD', age: 32 }, // 更多同结构客户对象 ];
内容的提问来源于stack exchange,提问作者beebs9000
相关产品推荐
相关产品推荐

