1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98
| const people = [ {name: '小莉', age: 30, sex: '女'}, {name: '小马', age: 25, sex: '男'}, {name: '小吴', age: 30, sex: '男'}, {name: '小刘', age: 25, sex: '女'}, {name: '小芯', age: 25, sex: '女'}, {name: '小王', age: 25, sex: '男'}, {name: '小白', age: 20, sex: '女'}, ]
const result = {}; for(const item of people){ const key = item.age; if(!result[key]){ result[key]=[]; } result[key].push(item); } console.log(result);
const result = {}; for(const item of people){ const key = item.sex; if(!result[key]){ result[key]=[]; } result[key].push(item); } console.log(result);
function groupBy(arr,propName){ const result = {}; for(const item of arr){ const key = item[propName]; if(!result[key]){ result[key]=[]; } result[key].push(item); } return result; } console.log(groupBy(people,'age')) console.log(groupBy(people,'sex'))
function groupBy(arr,generateKey){ const result = {}; for(const item of arr){ const key = generateKey(item); if(!result[key]){ result[key]=[]; } result[key].push(item); } return result; }
console.log(groupBy(people,(item)=>item.age))
console.log(groupBy(people,(item)=>item.sex))
console.log(groupBy(people,(item)=>`${item.age}-${item.sex}`))
const arr = [34,6,323,2,5,7,1,9,0] console.log(groupBy(arr,(item)=>(item % 2 ===0?'偶':'奇')))
function groupBy(arr,generateKey){ if(typeof generateKey === 'string'){ const propName = generateKey; generateKey = (item) => item[propName]; } const result = {}; for(const item of arr){ const key = generateKey(item); if(!result[key]){ result[key]=[]; } result[key].push(item); } return result; }
console.log(groupBy(people,'age')) console.log(groupBy(people,'sex'))
console.log(groupBy(people,(item)=>item.age))
console.log(groupBy(people,(item)=>item.sex))
console.log(groupBy(people,(item)=>`${item.age}-${item.sex}`))
const arr = [34,6,323,2,5,7,1,9,0] console.log(groupBy(arr,(item)=>(item % 2 ===0?'偶':'奇')))
|