遍历对象数组提取唯一age值的for循环/forEach实现示例
提取数组中唯一age值的实现方案
嘿,这就给你安排两种符合要求的实现方法——分别用for循环和forEach遍历数组,提取出唯一的age值:
使用for循环实现
核心思路是:先初始化一个空数组用来存储唯一的age值,然后遍历原数组的每一项,每次检查当前元素的age是否已经存在于结果数组中,不存在就把它推进去。
let array1 = [ { age: 20, name: "bob" }, { age: 24, name: "Mike" }, { age: 20, name: "Penny" }, { age: 24, name: "Jeff" }, { age: 25, name: "Mary" } ]; const uniqueAges = []; for (let i = 0; i < array1.length; i++) { const currentAge = array1[i].age; // 检查当前age是否未在结果数组中 if (!uniqueAges.includes(currentAge)) { uniqueAges.push(currentAge); } } console.log(uniqueAges); // 输出: [20, 24, 25]
使用forEach遍历实现
逻辑和for循环一致,只是用更简洁的forEach方法来遍历数组:
let array1 = [ { age: 20, name: "bob" }, { age: 24, name: "Mike" }, { age: 20, name: "Penny" }, { age: 24, name: "Jeff" }, { age: 25, name: "Mary" } ]; const uniqueAges = []; array1.forEach(item => { const currentAge = item.age; if (!uniqueAges.includes(currentAge)) { uniqueAges.push(currentAge); } }); console.log(uniqueAges); // 输出: [20, 24, 25]
额外优化小提示
如果你的数组数据量很大,Array.includes()每次都是线性查找,性能会有点跟不上。这时候可以搭配Set来记录已存在的age,它的查找效率是O(1)的,能明显提升性能:
let array1 = [ { age: 20, name: "bob" }, { age: 24, name: "Mike" }, { age: 20, name: "Penny" }, { age: 24, name: "Jeff" }, { age: 25, name: "Mary" } ]; const uniqueAges = []; const ageSet = new Set(); array1.forEach(item => { if (!ageSet.has(item.age)) { ageSet.add(item.age); uniqueAges.push(item.age); } }); console.log(uniqueAges); // 输出: [20, 24, 25]
内容的提问来源于stack exchange,提问作者Gabe Perry
相关产品推荐
相关产品推荐

