JavaScript统计对象数组指定字段值出现次数(无硬编码)实现咨询
解决方案
实现代码
// 原始输入数组 const json_output = [ { "id": "1", "Device Name": "device3", "Software Name": "windows" }, { "id": "2", "Device Name": "device6", "Software Name": "windows" }, { "id": "3", "Device Name": "device11", "Software Name": "windows" }, { "id": "4", "Device Name": "device11", "Software Name": "windows_11" }, { "id": "5", "Device Name": "device11", "Software Name": "linux_sys" } ]; const new_arr = []; // 存储去重后的软件名 const countMap = {}; // 临时存储每个软件名的计数 for (let i = 0; i < json_output.length; i++) { // 按需求取对象索引为2的第三个元素值,若后续对象字段顺序可能变动,推荐使用更稳妥的取值方式:json_output[i]["Software Name"] const softwareName = Object.values(json_output[i])[2]; // 检查值不存在则追加到new_arr if (!new_arr.includes(softwareName)) { new_arr.push(softwareName); } // 累计计数 countMap[softwareName] = (countMap[softwareName] || 0) + 1; } // 转换为要求的统计结果格式 const software_name_count = Object.entries(countMap).map(([name, count]) => { return { [name]: String(count) }; }); // 可直接打印查看结果 console.log(software_name_count);
输出结果
运行上述代码后得到的software_name_count完全匹配要求的格式:
[ { "windows": "3" }, { "windows_11": "1" }, { "linux_sys": "1" } ]
内容的提问来源于stack exchange,提问作者jupiterone1
相关产品推荐
相关产品推荐

