日韩成人免费在线_国产成人一二_精品国产免费人成电影在线观..._日本一区二区三区久久久久久久久不

當前位置:首頁 > 科技  > 軟件

Lodash 的又一方法被替代了,探索 JS 新特性 Object.groupBy

來源: 責編: 時間:2024-07-24 14:44:56 233觀看
導讀Hello,大家好,我是 Sunday。ES 2024增加了很多 JS 的新特性, 在這篇文章中 我們也提到過幾個可能會大火的新方法。其中 Object.groupBy 是最受大家關注的新方法之一:Object.groupBy() 靜態方法根據提供的回調函數返回的字

Hello,大家好,我是 Sunday。LvX28資訊網——每日最新資訊28at.com

ES 2024增加了很多 JS 的新特性, 在這篇文章中 我們也提到過幾個可能會大火的新方法。LvX28資訊網——每日最新資訊28at.com

其中 Object.groupBy 是最受大家關注的新方法之一:LvX28資訊網——每日最新資訊28at.com

Object.groupBy() 靜態方法根據提供的回調函數返回的字符串值對給定可迭代對象中的元素進行分組。返回的對象具有每個組的單獨屬性,其中包含組中的元素的數組。LvX28資訊網——每日最新資訊28at.com

它的具體語法如下所示:LvX28資訊網——每日最新資訊28at.com

Object.groupBy(items, callbackFn)// array:需要分組的數組。// callback:對數組中的每個元素執行的回調函數?;卣{函數返回一個值,用作分組的鍵。

而這樣方法在 Lodash 中也有過類似的實現,作用也與 Object.groupBy 類似(如果我們關注最近幾年的 ES 新增特性,會發現很多的新增特性都在社區庫中提前進行過實現):LvX28資訊網——每日最新資訊28at.com

圖片圖片LvX28資訊網——每日最新資訊28at.com

那么接下來就讓我們通過 5 個場景,深入看一下 Object.groupBy 這個方法,對我們以后的開發會有什么幫助!LvX28資訊網——每日最新資訊28at.com

01:按單一條件分組

按照年齡為數據進行分組。LvX28資訊網——每日最新資訊28at.com

const users = [  { name: '張三', age: 21 },  { name: '李四', age: 25 },  { name: '王五', age: 21 },  { name: '趙六', age: 28 } ] const groupedByAge = Object.groupBy(users, (user) => user.age) console.log(groupedByAge) /*  {    "21": [        {            "name": "張三",             "age": 21        },         {            "name": "王五",             "age": 21        }    ],     "25": [        {            "name": "李四",             "age": 25        }    ],     "28": [        {            "name": "趙六",             "age": 28        }    ]}  */

02:按多個條件分組

const users = [  { name: '張三', age: 21, gender: '男' },  { name: '李四', age: 25, gender: '女' },  { name: '王五', age: 21, gender: '女' },  { name: '趙六', age: 25, gender: '女' },  { name: '孫七', age: 30, gender: '女' },  { name: '周八', age: 21, gender: '男' }]const groupedByAgeAndGender = Object.groupBy(users, (user) => {  const ageGroup = user.age < 25 ? '25歲以下' : '25歲以上'  return `${ageGroup}-${user.gender}`})console.log(groupedByAgeAndGender)/*{"25歲以下-男": [  {    "name": "張三",    "age": 21,    "gender": "男"  },  {    "name": "周八",    "age": 21,    "gender": "男"  }],"25歲以上-女": [  {    "name": "李四",    "age": 25,    "gender": "女"  },  {    "name": "趙六",    "age": 25,    "gender": "女"  },  {    "name": "孫七",    "age": 30,    "gender": "女"  }],"25歲以下-女": [  {    "name": "王五",    "age": 21,    "gender": "女"  }]}  */

03:按復雜計算分組

根據指定的結果對數據進行分組處理。LvX28資訊網——每日最新資訊28at.com

const students = [  { name: '張三', score: 85 },  { name: '李四', score: 92 },  { name: '王五', score: 70 },  { name: '趙六', score: 78 },  { name: '孫七', score: 88 }]const groupedByGrade = Object.groupBy(students, (student) => {  if (student.score >= 90) return 'A'  if (student.score >= 80) return 'B'  if (student.score >= 70) return 'C'  return 'D'})console.log(groupedByGrade)/*{"B": [  {    "name": "張三",    "score": 85  },  {    "name": "孫七",    "score": 88  }],"A": [  {    "name": "李四",    "score": 92  }],"C": [  {    "name": "王五",    "score": 70  },  {    "name": "趙六",    "score": 78  }]}  */

04:依賴另外的數據進行分組

假設我們有一個用戶數據數組,并且想要按用戶居住的城市對其進行分組,其中城市數據是從外部 API 獲取的。LvX28資訊網——每日最新資訊28at.com

const users = [  { name: '張三', cityId: 1 },  { name: '李四', cityId: 2 },  { name: '王五', cityId: 1 },  { name: '趙六', cityId: 3 },  { name: '孫七', cityId: 2 }]// Simulate fetching city data from an external APIconst cityData = {  1: '北京',  2: '上海',  3: '深圳'}const groupedByCity = Object.groupBy(users, (user) => cityData[user.cityId])console.log(groupedByCity)/*{"北京": [  {    "name": "張三",    "cityId": 1  },  {    "name": "王五",    "cityId": 1  }],"上海": [  {    "name": "李四",    "cityId": 2  },  {    "name": "孫七",    "cityId": 2  }],"深圳": [  {    "name": "趙六",    "cityId": 3  }]}*/

05:按日期分組

根據日期進行數據劃分。LvX28資訊網——每日最新資訊28at.com

const logs = [  { message: '時間1', date: '2024-01-01T10:00:00Z' },  { message: '時間2', date: '2024-01-01T12:00:00Z' },  { message: '時間3', date: '2024-01-02T10:00:00Z' },  { message: '時間4', date: '2024-01-02T14:00:00Z' },  { message: '時間5', date: '2024-01-03T10:00:00Z' }]const groupedByDate = Object.groupBy(  logs,  (log) => new Date(log.date).toISOString().split('T')[0])console.log(groupedByDate)/*{"2024-01-01": [  {    "message": "時間1",    "date": "2024-01-01T10:00:00Z"  },  {    "message": "時間2",    "date": "2024-01-01T12:00:00Z"  }],"2024-01-02": [  {    "message": "時間3",    "date": "2024-01-02T10:00:00Z"  },  {    "message": "時間4",    "date": "2024-01-02T14:00:00Z"  }],"2024-01-03": [  {    "message": "時間5",    "date": "2024-01-03T10:00:00Z"  }]}*/

總結

結合以上的 5 個場景,我們可以看出 Object.groupBy 主要用來處理 分組 相關的操作。預期對應的還有 Map.groupBy() 這個方法,他們的使用場景相差不大,這里就不去細說了。LvX28資訊網——每日最新資訊28at.com

所以,有了 Object.groupBy 之后,一旦遇到 分組 相關的場景,那就是用它吧~LvX28資訊網——每日最新資訊28at.com

本文鏈接:http://www.www897cc.com/showinfo-26-103164-0.htmlLodash 的又一方法被替代了,探索 JS 新特性 Object.groupBy

聲明:本網頁內容旨在傳播知識,若有侵權等問題請及時與本網聯系,我們將在第一時間刪除處理。郵件:2376512515@qq.com

上一篇: 面試官:網頁太慢了怎么排查?

下一篇: 聊一聊 CSS 的十個技巧和竅門

標簽:
  • 熱門焦點
  • 6月安卓手機好評榜:魅族20 Pro蟬聯冠軍

    性能榜和性價比榜之后,我們來看最后的安卓手機好評榜,數據來源安兔兔評測,收集時間2023年6月1日至6月30日,僅限國內市場。第一名:魅族20 Pro好評率:95%5月份的時候魅族20 Pro就是
  • 5月安卓手機好評榜:魅族20 Pro奪冠

    性能榜和性價比榜之后,我們來看最后的安卓手機好評榜,數據來源安兔兔評測,收集時間2023年5月1日至5月31日,僅限國內市場。第一名:魅族20 Pro好評率:97.50%不得不感慨魅族老品牌還
  • 在線圖片編輯器,支持PSD解析、AI摳圖等

    自從我上次分享一個人開發仿造稿定設計的圖片編輯器到現在,不知不覺已過去一年時間了,期間我經歷了裁員失業、面試找工作碰壁,寒冬下一直沒有很好地履行計劃.....這些就放在日
  • “又被陳思誠騙了”

    作者|張思齊 出品|眾面(ID:ZhongMian_ZM)如今的國產懸疑電影,成了陳思誠的天下。最近大爆電影《消失的她》票房突破30億斷層奪魁暑期檔,陳思誠再度風頭無兩。你可以說陳思誠的
  • 品牌洞察丨服務本地,美團直播成效幾何?

    來源:17PR7月11日,美團App首頁推薦位出現&ldquo;美團直播&rdquo;的固定入口。在直播聚合頁面,外賣&ldquo;神槍手&rdquo;直播間、美團旅行直播間、美團買菜直播間等均已上線,同時
  • 認真聊聊東方甄選:如何告別低垂的果實

    來源:山核桃作者:財經無忌爆火一年后,俞敏洪和他的東方甄選依舊是頗受外界關心的&ldquo;網紅&rdquo;。7月5日至9日,為期5天的東方甄選&ldquo;甘肅行&rdquo;首次在自有App內直播,
  • Android 14發布:首批適配機型公布

    5月11日消息,谷歌在今天凌晨舉行了I/O大會,本次發布會谷歌帶來了自家的AI語言模型PaLM 2、谷歌Pixel Fold折疊屏、谷歌Pixel 7a手機,同時發布了Androi
  • OPPO K11采用全方位護眼屏:三大護眼能力減輕視覺疲勞

    日前OPPO官方宣布,全新的OPPO K11將于7月25日正式發布,將主打旗艦影像,和同檔位競品相比,其最大的賣點就是將配備索尼IMX890主攝,堪稱是2000檔位影像表
  • 親歷馬斯克血洗Twitter,硅谷的苦日子在后頭

    文/劉哲銘  編輯/李薇  馬斯克再次揮下裁員大刀?! ∶绹鴷r間11月14日,Twitter約4400名外包員工遭解雇,此次被解雇的員工的主要工作為內容審核等。此前,T
Top 主站蜘蛛池模板: 海盐县| 原阳县| 津市市| 通州区| 正宁县| 赞皇县| 巴青县| 库尔勒市| 青海省| 达日县| 大厂| 安国市| 伊春市| 康马县| 凉山| 大庆市| 宜黄县| 招远市| 湛江市| 商水县| 渭南市| 铜梁县| 祁连县| 永福县| 神农架林区| 报价| 隆德县| 华宁县| 宜丰县| 五莲县| 江西省| 洛浦县| 泸溪县| 潍坊市| 黔东| 临朐县| 黔西县| 绥中县| 兴业县| 柳河县| 闽侯县|