将数组对象分组,拆分为多个数组

将数组中的对象数据按照某个属性值进行分组,拆分为多个数组
let list = [{
      "name": "aa",
      "sex": '0'
    },
    {
      "name": "bb",
      "sex": '1'
    },
    {
      "name": "cc",
      "sex": '0'
    },
    {
      "name": "dd",
      "sex": '1'
    }];

将数组数据按照性别进行分组

function groupBy(arr, fn) {
	let group = {}
	arr.map(item => {
		let type = JSON.stringify(fn(item))
		group[type] =group[type] || []
		group[type].push(item)
	})
	
	return Object.keys(group).map(item => {
		return group[item]
	})
}

let res = groupBy(list, function(res) {
	return res.sex
})
console.log(res)
/**
	[
		[
			{ name: 'aa', sex: '0' }, { name: 'cc', sex: '0' }
		],
		[
			{ name: 'bb', sex: '1' }, { name: 'dd', sex: '1' }
		]
	]
**/
包含的方法 Object.keys(data),返回值为数组
  • data为对象:返回数组内容为对象的key
    obj = { name: ‘aa’, age: ‘18’, sex: 1 }
    Object.key(obj) ⇒ [‘name’, ‘age’, ‘sex’]

  • data为字符串或数组:返回数组内容为下标索引
    arr = [‘a’, ‘b’, ‘c’]
    str = ‘hello’
    Object.keys(arr) ⇒ [‘0’, ‘1’ ,‘2’]
    Object.keys(str) ⇒ [‘0’, ‘1’ ,‘2’, ‘3’, ‘4’]

  • 5
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值