JavaScript中如何从对象数组中提取name属性值重复的对象
筛选数组中name属性重复的对象
可以通过统计属性出现次数再过滤数组的方式实现需求,以下是完整的实现代码:
<!DOCTYPE html> <html> <body> <h2>JavaScript</h2> <script> const value = [ { "id": 2, "name": "Pumpkin" }, { "id": 1, "name": "Ladies Finger" }, { "id": 4, "name": "Spinach" }, { "id": 5, "name": "Spinach" } ]; // 统计每个name的出现次数 const nameCount = value.reduce((countMap, item) => { countMap[item.name] = (countMap[item.name] || 0) + 1; return countMap; }, {}); // 过滤出name出现次数大于1的对象 const duplicatedItems = value.filter(item => nameCount[item.name] > 1); console.log("get same value property", duplicatedItems); /* 输出结果: [ { "id": 4, "name": "Spinach" }, { "id": 5, "name": "Spinach" } ] */ </script> </body> </html>
代码说明
- 统计次数:用
Array.reduce()遍历数组,生成一个以name为键、出现次数为值的对象,记录每个name的出现频次。 - 过滤数组:用
Array.filter()遍历原数组,只保留计数对象中出现次数大于1的元素,最终得到所有name重复的对象。
内容的提问来源于stack exchange,提问作者UIAPPDEVELOPER
相关产品推荐
相关产品推荐

