如何将JSON数组元素按重复情况拆分至不同数组?
拆分数组中的重复与非重复元素
可以通过数组的reduce和filter方法组合实现,先统计每个元素的出现次数,再根据次数拆分:
实现代码
let test = [ { "id1": "1" }, { "id1": "2" }, { "id1": "2" } ]; // 第一步:统计每个id1的出现次数 const countMap = test.reduce((acc, item) => { const key = item.id1; acc[key] = (acc[key] || 0) + 1; return acc; }, {}); // 第二步:拆分非重复和重复元素 const ans1 = test.filter(item => countMap[item.id1] === 1); const ans2 = test.filter(item => countMap[item.id1] > 1); console.log('ans1:', ans1); console.log('ans2:', ans2);
代码说明
reduce遍历数组,用对象记录每个id1对应的出现次数,比如最终countMap会是{"1":1, "2":2}。filter分别根据计数结果筛选元素:计数为1的放进ans1,计数大于1的放进ans2。
这样就能得到你需要的拆分结果,比单纯的for循环更简洁。
内容的提问来源于stack exchange,提问作者nitesh
相关产品推荐
相关产品推荐

