如何从对象数组提取uuid并去重,得到仅含唯一uuid的有序新数组
实现方案
你可以直接用ES6+的语法实现,一行代码就能完成需求:
const uniqueSortedUuids = [...new Set(x.map(item => item.uuid))].sort()
逻辑拆解
- 先用
x.map(item => item.uuid)遍历原对象数组,提取所有项的uuid属性,得到全量uuid数组 - 借助
Set数据结构自动去重的特性,清除重复的uuid值 - 用扩展运算符
...将Set结构转回普通数组 - 最后调用
sort()方法对去重后的uuid数组按字典序排序
如果需要兼容不支持ES6语法的低版本环境,可以用对象标记法实现:
const uuidMap = {} const result = [] // 遍历收集唯一uuid for (let i = 0; i < x.length; i++) { const uuid = x[i].uuid if (!uuidMap[uuid]) { uuidMap[uuid] = true result.push(uuid) } } // 排序得到最终结果 result.sort()
如果你需要自定义排序规则,可向sort()方法传入自定义比较函数:
// 示例:按uuid的字典序倒序排列 .sort((a, b) => b.localeCompare(a))
内容的提问来源于stack exchange,提问作者Ludovic Argenty
相关产品推荐
相关产品推荐

