如何使用JavaScript过滤城州不同的对象并筛选温度低于40的城市列表
需求说明
- 先过滤出城市(city)与州(state)名称不相同的对象
- 再从上述过滤结果中,提取温度(temp)低于40的城市名称列表
给定对象数组
let arr = [ { city:"chennai", state: "tamilnadu", temp: 44 }, { city:"coimbator", state: "tamilnadu", temp: 39 }, { city:"mumbai", state: "maharashtra", temp: 32 }, { city:"delhi", state: "delhi", temp: 24 }, { city:"kolkata", state: "west bengal", temp: 28 } ];
现有JavaScript代码
const uniqueStateCity = []; const unique = arr.filter(element => { const isDuplicate = uniqueStateCity.includes(element.city); if (!isDuplicate) { if(element.temp < 40) { uniqueStateCity.push(element.city ); return true; } } return false; }); console.log(unique );
现有代码问题
现有代码完全没处理「城市与州名称不同」的核心需求,反而在做城市名去重+温度筛选,会把delhi这种城市和州同名的对象也包含进去,不符合要求。
正确实现代码
用链式调用实现更简洁:
const targetCities = arr // 第一步:过滤掉城市与州名称相同的对象 .filter(item => item.city !== item.state) // 第二步:筛选温度低于40的对象 .filter(item => item.temp < 40) // 第三步:提取城市名称列表 .map(item => item.city); console.log(targetCities); // 输出:["coimbator", "mumbai", "kolkata"]
内容的提问来源于stack exchange,提问作者user_1234
相关产品推荐
相关产品推荐

