如何获取数组中首个满足指定条件的对象
问题分析与解决方案
你的代码问题出在**filter方法的使用场景错误**:
filter会遍历整个数组,返回所有满足条件的元素组成的新数组- 你当前的判断条件是
building.id == 1,而数组里所有对象的id都是1,所以最终得到的是原数组的完整副本,自然无法拿到你想要的单个目标对象
要获取第一个city_id: 1的对象,推荐用find方法,它会在找到第一个匹配项后立即停止遍历,返回该元素:
const building_arr = [ { id: 1, name: 'Test 1', city_id: 5 }, { id: 1, name: 'Test 2', city_id: 1 }, { id: 1, name: 'Test 3', city_id: 1 }, { id: 1, name: 'Test 4', city_id: 3 }, { id: 1, name: 'Test 5', city_id: 5 }, ]; // 获取第一个city_id为1的对象 const targetBuilding = building_arr.find(building => building.city_id === 1); console.log(targetBuilding); // 输出 { id: 1, name: 'Test 2', city_id: 1 }
如果坚持要用filter,也可以在结果数组中取第一个元素,但这种方式会遍历整个数组,效率不如find:
const targetBuilding = building_arr.filter(building => building.city_id === 1)[0];
内容的提问来源于stack exchange,提问作者Hai Truong IT
相关产品推荐
相关产品推荐

