javascript封装数组分组,实现数组按属性分组

77 阅读1分钟

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)