如何在Javascript中创建唯一JSON对象字面量数据集并提取去重分类数组
语法修正说明
你提供的示例JSON存在2处语法错误,先修正为合法可操作的JS数据结构:
const productData = { "products": [ { "id": 1, "categories": { "1": "Men" } }, { "id": 2, "categories": { "1": "Men" } }, { "id": 3, "categories": { "1": "Woman" } } ] }
去重提取分类实现方案
方式1:Set+flatMap 简洁实现(主流环境通用)
利用Set自动去重的特性,一行代码完成提取:
const uniqueCategories = [...new Set(productData.products.flatMap(item => Object.values(item.categories)))] console.log(uniqueCategories) // 输出:["Men", "Woman"]
方式2:遍历手动去重(兼容低版本JS环境)
适配不支持flatMap的老旧运行环境:
const categorySet = new Set() productData.products.forEach(product => { // 提取单个产品下所有分类值,适配categories多键值对场景 const currentCates = Object.values(product.categories) currentCates.forEach(cate => categorySet.add(cate)) }) const uniqueCategories = Array.from(categorySet) console.log(uniqueCategories) // 输出:["Men", "Woman"]
补充说明
- 若你的
categories结构固定只有键1,可以直接用item.categories['1']替换Object.values(item.categories)进一步简化逻辑 - 如需生成唯一的JSON对象字面量数据集,可基于上述去重后的分类数组,结合业务自定义字段结构即可
内容的提问来源于stack exchange,提问作者Mohammed Parvez
相关产品推荐
相关产品推荐

