JavaScript分組是一個非常常見的操作,可以用于對數據進行分類、過濾、排序等。下面我們就來詳細講解JavaScript分組操作。
```html
let list = [ { name: '張三', age: 20, gender: 'male' }, { name: '李四', age: 22, gender: 'male' }, { name: '王五', age: 18, gender: 'female' }, { name: '趙六', age: 19, gender: 'female' }, { name: '錢七', age: 21, gender: 'male' }, ];``` 我們假設我們有一個人員列表,如上所示。我們現在要根據年齡段對列表進行分組,并計算各組人數和平均年齡。 ## 根據年齡段分組 我們可以使用reduce函數,對年齡進行分組。 ```html
let groupByAge = list.reduce((result, item) =>{ const ageGroup = Math.floor(item.age / 10) * 10; result[ageGroup] = result[ageGroup] || []; result[ageGroup].push(item); return result; }, {}); console.log(groupByAge);``` 上述代碼中,我們首先使用Math.floor函數將每個人的年齡向下取整,然后將同一個年齡組的人員放在一起。最后返回一個以年齡段為key的對象。 輸出結果如下: ```html
{ '20': [ { name: '張三', age: 20, gender: 'male' }, { name: '李四', age: 22, gender: 'male' }, { name: '趙六', age: 19, gender: 'female' }, ], '10': [ { name: '王五', age: 18, gender: 'female' }, ], '21': [ { name: '錢七', age: 21, gender: 'male' }, ], }``` 可以看到,我們已經將人員按照年齡段分好了組,接下來我們需要統計每個組的人數和平均年齡。 ## 統計組內人數和平均年齡 為了計算組內人數和平均年齡,我們需要循環遍歷每個組,統計人數和年齡總和。 ```html
let groupSum = {}; for (let ageGroup in groupByAge) { let group = groupByAge[ageGroup]; groupSum[ageGroup] = { count: group.length, avgAge: group.reduce((sum, item) =>sum + item.age, 0) / group.length, }; } console.log(groupSum);``` 上述代碼中,我們使用for...in循環遍歷每個年齡段,然后對每個年齡段內的人員進行統計。最終輸出每個年齡段的人數和平均年齡。 輸出結果如下: ```html
{ '20': { count: 3, avgAge: 20.333333333333332 }, '10': { count: 1, avgAge: 18 }, '21': { count: 1, avgAge: 21 }, }``` 綜上所述,JavaScript分組操作是非常實用且常見的操作。無論是對數據進行分類、過濾、排序等,分組都是一個很好的工具。希望本文對您有所幫助。