如何统计JSON对象数组中不同siteId值的出现次数
实现方案
核心思路为单次遍历+哈希表计数,无需单独做提取、去重、逐个统计的多步操作,时间复杂度为O(n),仅需遍历一次数组即可完成统计。
JavaScript 实现
// 假设你的JSON数组为data const siteCount = data.reduce((countMap, current) => { const siteId = current.resourceAttributes.siteId countMap[siteId] = (countMap[siteId] || 0) + 1 return countMap }, {}) // 按要求格式输出 Object.entries(siteCount).forEach(([siteId, num]) => { console.log(`SiteId${siteId} occurance ${num}`) })
Python 实现
借助标准库collections.Counter可以做到一行完成计数:
from collections import Counter # 假设你的JSON数组为data site_count = Counter(item["resourceAttributes"]["siteId"] for item in data) # 按要求格式输出 for site_id, cnt in site_count.items(): print(f"SiteId{site_id} occurance {cnt}")
如果不想引入额外依赖,也可以用普通字典实现:
site_count = {} for item in data: site_id = item["resourceAttributes"]["siteId"] site_count[site_id] = site_count.get(site_id, 0) + 1
如果你的数据中存在部分对象没有
resourceAttributes或者siteId字段的情况,可以在计数前加一层存在性判断,跳过无效数据即可。
内容的提问来源于stack exchange,提问作者newbir
相关产品推荐
相关产品推荐

