2019-11-20 提取数组中的对象属性去重并统计重复次数

2019-11-20  本文已影响0人  追寻1989

假如需求是:我们需要获取一组文章列表的分类标签,要求提取的分类标签不重复,并且统计每个分类的文章数

image.png

在标签分类列表中经常用到这样的数据格式:

let list=[
  {
    tagName:'杂谈'
    content:'文章1的内容'
  },
  {
    tagName:'资源分享'
    content:'文章2的内容'
  },
  {
    tagName:'踩坑'
    content:'文章3的内容'
  },
  {
    tagName:'资源分享'
    content:'文章4的内容'
  },
  {
    tagName:'知识库'
    content:'文章5的内容'
  },
  {
    tagName:'踩坑'
    content:'文章6的内容'
  },
]

let listObj={}//创建一个对象,用来创建索引

//提取文章分类标签,去重和统计文章出现次数
list.forEach((item,index)=>{
  if (!listObj[item.tagName]) {//利用对象key索引,判断是否已有该标签分类字段
    listObj[item.tagName] = {//没有则创建key索引
      'tagName': item.tagName,
      'num': 1 //初始统计1
      }
  } else {//有则增加该重复次数统计
      ++listObj[item.tagName]['num']
  }
 });
      // console.log('listObj',listObj)
      // console.log('list',list)

 //索引对象转换成数组
    let newList = []
    for (var k in listObj) {
        newList.push({
           'col': listObj[k]['tagName'],
           'num': listObj[k]['num']
       })
    }
 // console.log('newList ',newList )

此类应用还有很多,不得不说,利用对象的索引去重是真的好用,mark一下

上一篇下一篇

猜你喜欢

热点阅读