javascript封装数组分组,实现数组按属性分组
const people = [
{name:'小帅',age:'22',sex:'男'},
{name:'小红',age:'18',sex:'女'},
{name:'小明',age:'20',sex:'男'},
{name:'小黄',age:'20',sex:'女'},
{name:'小苗',age:'18',sex:'女'},
{name:'名字',age:'22',sex:'男'},
{name:'名字', age:'22', sex:'男'},
]
function groupByTwo(arr,gengrateKey){
// 参数归一化
let extractKey = null
if(typeof gengrateKey === 'string'){
extractKey = (item) => item[gengrateKey]
}else{
extractKey = gengrateKey
}
const result = {}
for (const preson of arr) {
const key = extractKey(preson)
if(!result[key]){
result[key] = []
}
result[key].push(preson)
}
return result
}
// 按照性别分组
const arr = groupByTwo(people,(item)=>item.sex)
console.log(arr)
const arr4 = groupByTwo(people,'sex')
console.log('arr4:',arr4)
// 按照性别和年龄分组
const arr2 = groupByTwo(people,(item)=>`${item.sex}-${item.age}`)
console.log(arr2)
// 返回奇数偶数
const arrNums = [1,3,4,2,7,8,5,10,9,6]
const arr3 = groupByTwo(arrNums,(item)=>item % 2 === 0 ? '奇数' : '偶数')
console.log(arr3)