js数组如何按照属性分类?

如:

let arr = [
    {id:1,val:100,name:"张"},
    {id:2,val:100,name:"刘"},
    {id:3,val:300,name:"林"},
    {id:4,val:200,name:"许"},
    {id:5,val:100,name:"周"},
    {id:6,val:200,name:"张"}
]

如何按照val分类把数组变成[ [ ],[ ],[ ] ]的格式?

阅读 6.1k
2 个回答
const map = arr.reduce((result, item) => {
    result[item.val] = result[item.val] || []
    result[item.val].push(item)
    return result
}, {})

// result即为所求
const result = Object.values(map)
const categorys=Array.from(new Set(arr.map(item=>item.val)))
return categorys.map(c=>arr.filter(a=>a.val===c))
撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题