[TS LeetCode] 2631. Group By

閱讀時間約 3 分鐘

題目摘要:

這個題目要求你編寫一個程式碼,以擴展所有陣列(arrays)的功能,使得你可以在任何陣列上調用 array.groupBy(fn) 方法,該方法將返回一個分組版本的陣列。分組後的陣列是一個物件,其中每個鍵是回調函數 fn(arr[i]) 的輸出,而每個值是一個包含所有原陣列中帶有該鍵的項目的陣列。你需要實現這一功能,而不使用 lodash 的 _.groupBy 函數。

題目知識點:

1. TypeScript中的全局擴展 (Global Extension)

2. 使用泛型 (Generics) 創建可重用的函數

3. 迭代陣列中的元素

4. 物件的鍵值對操作


先備知識

1. 基本的 TypeScript 知識

2. 陣列和物件的基本操作


應用情境:

這段程式碼可用於網頁頁面開發中的多種場景,例如:

1. 使用者管理:當需要將使用者按照不同屬性(例如角色、註冊日期等)分組時,可以使用 `groupBy` 函數輕鬆實現。

2. 商品分類:當您有一個商品列表,並希望按照類別將它們分組,以便在網站上創建選單或篩選器時,這個函數可以派上用場。

3. 日程安排:在行事曆應用中,您可以使用 `groupBy` 將事件按照日期分組,以便顯示每天的事件列表。


結論:

這個 TypeScript 程式碼擴展了陣列的功能,讓我們可以輕鬆地按照指定的函數將陣列中的項目分組。它使用了 TypeScript 中的泛型、陣列迭代和物件鍵值對的操作來實現這一功能。這在網頁頁面開發中可以用於各種情境,從用戶管理到數據分析,都能提供更好的組織和可視化數據的方式。


result[key] ||= []; 的用法

這行程式碼使用了 JavaScript 的 Nullish 合併運算子 (??=) 的語法。它的作用是,如果 result[key] 的值為 nullundefined,則將其初始化為一個空陣列 []。這確保了無論何時將項目添加到 result[key] 中,它都已經存在並可以接受新的項目。

解答:

declare global {
    interface Array<T> {
        groupBy(fn: (item: T) => string): Record<string, T[]>
    }
}

Array.prototype.groupBy = function <T>(fn: (item: T) => string) {
    const result: Record<string, any> = {};
    for (let item of this) {
        const key: string = fn(item);
        result[key] ||= [];
        result[key].push(item);
    }
    return result;
}

export { }



2會員
8內容數
"TypeScript LeetCode" 以 TypeScript 為工具,深入解析 LeetCode 上的算法和資料結構問題,提供清晰解釋和程式碼示範,幫助您精進 TypeScript 技能,解決挑戰性問題,無論您的程式開發水平如何。讓我們一同鑽研、提升,迎接算法挑戰,成長技術專長!,快速提高您的技能水平
留言0
查看全部
發表第一個留言支持創作者!
毛怪的沙龍 的其他內容
這篇文章介紹了如何建立一個時間限制的異步函數,以確保操作在指定時間內完成。 - 知識點包括異步編程、Promise使用、計時器函數和函數引數處理,以及錯誤處理。 - 應用情境包括網頁請求超時控制、前端性能優化和遊戲開發。 - 提高應用程式的可靠性和用戶體驗,確保操作不會花費過長的時間。 - 文章內
[Leetcode 筆記] TypeScript 2715. Timeout Cancellation 了解和有效使用 clearTimeout 和 setTimeout 可以提高JavaScript程序的效率和響應性。
分享今年29歲的我,離職之後開始探索自己的過程。
這篇文章介紹了如何建立一個時間限制的異步函數,以確保操作在指定時間內完成。 - 知識點包括異步編程、Promise使用、計時器函數和函數引數處理,以及錯誤處理。 - 應用情境包括網頁請求超時控制、前端性能優化和遊戲開發。 - 提高應用程式的可靠性和用戶體驗,確保操作不會花費過長的時間。 - 文章內
[Leetcode 筆記] TypeScript 2715. Timeout Cancellation 了解和有效使用 clearTimeout 和 setTimeout 可以提高JavaScript程序的效率和響應性。
分享今年29歲的我,離職之後開始探索自己的過程。
你可能也想看
Google News 追蹤
Thumbnail
這個秋,Chill 嗨嗨!穿搭美美去賞楓,裝備款款去露營⋯⋯你的秋天怎麼過?秋日 To Do List 等你分享! 秋季全站徵文,我們準備了五個創作主題,參賽還有機會獲得「火烤兩用鍋」,一起來看看如何參加吧~
Thumbnail
美國總統大選只剩下三天, 我們觀察一整週民調與金融市場的變化(包含賭局), 到本週五下午3:00前為止, 誰是美國總統幾乎大概可以猜到60-70%的機率, 本篇文章就是以大選結局為主軸來討論近期甚至到未來四年美股可能的改變
Thumbnail
題目摘要 給定一個整數陣列 `prices`,其中 `prices[i]` 代表第 `i` 天的股票價格。在每一天,你可以決定買入和/或賣出股票。然而,你同一時間只能擁有至多一股股票。你可以在同一天內買入然後立刻賣出股票。找出並返回你可以實現的最大利潤。
Thumbnail
題目摘要 給定一個陣列 prices,其中 prices[i] 代表第 i 天的股票價格。你希望透過在某一天購買一股股票,並在未來的某一天賣出它,以最大化你的利潤。如果無法獲得任何利潤,則返回 0。
Thumbnail
題目摘要: 在這篇文章中,我們將討論如何使用摩爾投票算法找出一個陣列中的「主要元素」。主要元素指的是在陣列中出現次數超過一半的元素,並且我們可以確定它一定存在於陣列中。這個算法的核心思想和應用將在本文中被詳細介紹。 題目知識點: 主要元素的定義和重要性。 摩爾投票算法的工作原理和優點。 先備知識
Thumbnail
隨著科技的進步和遠程工作的興起,通訊方式正在經歷劇變。然而,這也讓許多人對於傳統的電話禮儀感到困惑。美國禮儀專家Lizzie Post針對這一問題,提出了六大電話禮儀建議,幫助我們在新的通訊環境下保持專業和禮貌。
Thumbnail
上週的雙11大家有買東西嗎? 去年雙11購入了tokuto的眼部按摩器TS-183使用滿一年心得分享給大家,希望能幫助跟我一樣眼睛容易酸澀又找不到相關心得文的人~
2021年底前價格應該會在 112-120之間移動
Thumbnail
電動汽車龍頭 Tesla,正式發布了他們在今年第二季的財報,交出了非常亮眼的成績,無論是在營收,或者是獲利上,都超過了市場上的分析師預期,也讓盤後特斯拉的股價上漲了 1%。當然,作為市場上最熱門的股票之一,特斯拉的營運狀況是非常多人關注的焦點,所以就讓科技巨頭解碼來帶大家看特斯拉最新一季的財報重點。
Thumbnail
這個秋,Chill 嗨嗨!穿搭美美去賞楓,裝備款款去露營⋯⋯你的秋天怎麼過?秋日 To Do List 等你分享! 秋季全站徵文,我們準備了五個創作主題,參賽還有機會獲得「火烤兩用鍋」,一起來看看如何參加吧~
Thumbnail
美國總統大選只剩下三天, 我們觀察一整週民調與金融市場的變化(包含賭局), 到本週五下午3:00前為止, 誰是美國總統幾乎大概可以猜到60-70%的機率, 本篇文章就是以大選結局為主軸來討論近期甚至到未來四年美股可能的改變
Thumbnail
題目摘要 給定一個整數陣列 `prices`,其中 `prices[i]` 代表第 `i` 天的股票價格。在每一天,你可以決定買入和/或賣出股票。然而,你同一時間只能擁有至多一股股票。你可以在同一天內買入然後立刻賣出股票。找出並返回你可以實現的最大利潤。
Thumbnail
題目摘要 給定一個陣列 prices,其中 prices[i] 代表第 i 天的股票價格。你希望透過在某一天購買一股股票,並在未來的某一天賣出它,以最大化你的利潤。如果無法獲得任何利潤,則返回 0。
Thumbnail
題目摘要: 在這篇文章中,我們將討論如何使用摩爾投票算法找出一個陣列中的「主要元素」。主要元素指的是在陣列中出現次數超過一半的元素,並且我們可以確定它一定存在於陣列中。這個算法的核心思想和應用將在本文中被詳細介紹。 題目知識點: 主要元素的定義和重要性。 摩爾投票算法的工作原理和優點。 先備知識
Thumbnail
隨著科技的進步和遠程工作的興起,通訊方式正在經歷劇變。然而,這也讓許多人對於傳統的電話禮儀感到困惑。美國禮儀專家Lizzie Post針對這一問題,提出了六大電話禮儀建議,幫助我們在新的通訊環境下保持專業和禮貌。
Thumbnail
上週的雙11大家有買東西嗎? 去年雙11購入了tokuto的眼部按摩器TS-183使用滿一年心得分享給大家,希望能幫助跟我一樣眼睛容易酸澀又找不到相關心得文的人~
2021年底前價格應該會在 112-120之間移動
Thumbnail
電動汽車龍頭 Tesla,正式發布了他們在今年第二季的財報,交出了非常亮眼的成績,無論是在營收,或者是獲利上,都超過了市場上的分析師預期,也讓盤後特斯拉的股價上漲了 1%。當然,作為市場上最熱門的股票之一,特斯拉的營運狀況是非常多人關注的焦點,所以就讓科技巨頭解碼來帶大家看特斯拉最新一季的財報重點。