如何根据指定键筛选JSON取值并去除重复数据
解决方案
你可以使用以下通用JavaScript方法实现,无论用户选中properties下的哪个键,都能返回对应去重后的可选值列表:
function getUniqueValues(selectedKey) { // 提取所有对应属性的值 const valueList = initialdata.map(item => { // 容错处理:不存在该属性时返回undefined return item.properties?.[selectedKey]; }).filter(Boolean); // 过滤掉不存在属性的空值 // 利用Set去重后转回数组 return [...new Set(valueList)]; } // 调用示例:用户选中Region时 const regionOptions = getUniqueValues('Region'); console.log(regionOptions); // 输出 ["US", "UK"] // 其他场景测试 console.log(getUniqueValues('SubRegion')); // 输出 ["US-1", "US-2", "UKK"] console.log(getUniqueValues('SiteID')); // 输出 ["234", "235", "121"]
逻辑说明
- 首先通过
map遍历所有数据项,提取选中属性对应的取值,同时加入可选链操作符?.做容错,避免属性不存在时报错 - 用
filter(Boolean)过滤掉无效的空值/undefined值 - 利用ES6的
Set数据结构自动去重的特性,将提取到的数组转成Set后再转回普通数组,即可得到无重复的可选值列表
内容的提问来源于stack exchange,提问作者user4061275
相关产品推荐
相关产品推荐

