如何筛选data对象,仅保留crop为Eiche和Kiefer的条目?
按指定crop值筛选数据对象的实现方法
需求说明
现有如下结构的data对象(可视为类数组或标准数组):
const data = [ {pppId: '005618-00', eppo: 'FAUSY', crop: 'Rotbuche'}, {pppId: '005618-00', eppo: 'PSTME', crop: 'Douglasie'}, {pppId: '005618-00', eppo: 'QUESS', crop: 'Eiche'}, {pppId: '005618-00', eppo: 'YLAGL', crop: 'Langholzpolter'}, {pppId: '005618-00', eppo: 'PIEPU', crop: 'Blaufichte'}, {pppId: '005618-00', eppo: 'ALUSS', crop: 'Erle'}, {pppId: '005618-00', eppo: 'POPSS', crop: 'Pappel'}, {pppId: '005618-00', eppo: 'YLAGE', crop: 'Einzelstämme'}, {pppId: '005618-00', eppo: 'NNNZG', crop: 'Ziergehölze'}, {pppId: '005618-00', eppo: 'ACRCA', crop: 'Acer campestre'}, {pppId: '005618-00', eppo: 'YLAGS', crop: 'Schichtholzpolter'}, {pppId: '005618-00', eppo: 'PIUSS', crop: 'Kiefer'}, {pppId: '005618-00', eppo: 'ABINO', crop: 'Nordmann-Tanne'}, {pppId: '005618-00', eppo: 'CIPBE', crop: 'Carpinus betulus'}, {pppId: '005618-00', eppo: 'LAXSS', crop: 'Lärche'} ];
需要筛选出crop字段值为Eiche或Kiefer的条目,最终结果如下:
[ {pppId: '005618-00', eppo: 'QUESS', crop: 'Eiche'}, {pppId: '005618-00', eppo: 'PIUSS', crop: 'Kiefer'} ]
实现方式
使用JavaScript的filter方法即可快速完成筛选,有两种实用写法:
写法一:直接指定判断条件
// 若原始data是带数字键的对象,先转成数组:const dataArray = Object.values(data); const filteredData = data.filter(item => { return item.crop === 'Eiche' || item.crop === 'Kiefer'; });
写法二:用数组includes简化判断(更灵活)
如果后续需要增加更多筛选的crop值,直接修改目标数组即可,无需调整判断逻辑:
const targetCrops = ['Eiche', 'Kiefer']; const filteredData = data.filter(item => targetCrops.includes(item.crop));
补充说明
filter方法会遍历数组中的每个元素,将符合条件的元素收集起来返回一个新数组,不会修改原始数据。如果原始data不是标准数组而是带数字键的对象,先用Object.values(data)转换为数组再执行筛选即可。
内容的提问来源于stack exchange,提问作者Amrmsmb
相关产品推荐
相关产品推荐

