如何从JavaScript对象数组中提取去重后的category属性值
实现方案
你可以通过以下几种常用方式实现去重需求,优先推荐第一种写法,简洁高效:
方法1:结合Set实现(最优方案)
Set是ES6新增的内置对象,天然支持存储不重复的值,配合map提取属性后直接去重即可:
// 先提取所有category,再通过Set去重,最后转回数组 const uniqueCategories = [...new Set(array.map(item => item.category))] console.log(uniqueCategories) // 输出 ["category1","category2","category3"]
方法2:用filter实现
如果你希望用你之前提到的filter方法完成,可以通过判断元素第一次出现的位置来过滤重复项:
const uniqueCategories = array .map(item => item.category) // 仅保留当前元素第一次出现的条目 .filter((category, index, originArray) => originArray.indexOf(category) === index)
两种方法都可以得到你预期的无重复分类列表,第一种写法性能和可读性都更好,适合所有现代浏览器/Node.js环境。
内容的提问来源于stack exchange,提问作者Uzo Okpara
相关产品推荐
相关产品推荐

