JS对象数组分组:使用lodash.groupBy方法分组对象数组

3,793 阅读1分钟

描述

项目开发中遇到一个需要对数组数据进行分组的需求,数组中存的是对象,需要根据对象中的某个字段分组,loash.groupBy可以解决这个问题

来看下需要分组的数据结构:

 let ary = [
        { name: 'apple', position: 2 },
        { name: 'banana', position: 3 },
        { name: 'watermelon', position: 1 },
        { name: 'cherry', position: 2 },
        { name: 'orange', position: 1 }
      ]

分组后的数据结构:

 {
     1: [
       { name: "watermelon", position: 1 },
       { name: "orange", position: 1 },
     ],

     2: [
       { name: "apple", position: 2 },
       { name: "cherry", position: 2 },
     ],
     3: [{ name: "banana", position: 3 }],
   }

此处是根据position这个字段将数据分组,方法如下:

let result = lodash.groupBy(ary, 'position')

结果返回一个对象结构的数据,要分组的字段position对应的值作为key, position相同的数据放入一个数组中作为value值

总结

有点像SQL中的group by语法。可以根据需要再对分组后的数据结构进行处理奥~ (碎碎念...好长时间没写文章了,因为迷上了加勒比海盗--随便找个理由hehe,杰克船长好帅。嗯,Fighting!!)