Skip to content
静心静心
HOME
DoubtfulCases
github icon
  • TYPESCRIPT

    • 练习TS泛型简单的案例
      • vue3中div报错解决方案
        • typeof有何局限性如何解决
          • instanceof详解
            • 简简单单Promise

            练习TS泛型简单的案例

            author iconYYtimer icon小于 1 分钟

            # 练习TS泛型简单的案例

            小小排序加函数重载

            function isChinese(arr: any[]): Boolean {
                let pattern = /^(?:[\u3400-\u4DB5\u4E00-\u9FEA\uFA0E\uFA0F\uFA11\uFA13\uFA14\uFA1F\uFA21\uFA23\uFA24\uFA27-\uFA29]|[\uD840-\uD868\uD86A-\uD86C\uD86F-\uD872\uD874-\uD879][\uDC00-\uDFFF]|\uD869[\uDC00-\uDED6\uDF00-\uDFFF]|\uD86D[\uDC00-\uDF34\uDF40-\uDFFF]|\uD86E[\uDC00-\uDC1D\uDC20-\uDFFF]|\uD873[\uDC00-\uDEA1\uDEB0-\uDFFF]|\uD87A[\uDC00-\uDFE0])+$/
                return arr.some((item) => {
                    return pattern.test(item)
                })
            }
            
            
            // 这里兼顾了英文和中文的排序
            function quiteSort<T>(arr: Array<T>): Array<T> {
                if (arr.length < 2) { return arr }
                let left: Array<any> = [];
                var right: Array<any> = [];
                let mid = arr.splice(Math.floor(arr.length / 2), 1)[0];
                for (var i = 0; i < arr.length; i++) {
                    if (arr[i] < mid) {
                        left.push(arr[i]);
                    } else {
                        right.push(arr[i])
                    }
                }
                return quiteSort(left).concat(mid, quiteSort(right))
            }
            
            
            // 排序中文
            function sortChinese<T>(arr: any[]): any[] {
                return arr.sort((i, o) => {
                    return (i.localeCompare(o, 'zh-CN'))
                })
            }
            
            
            // 排序数字
            function sortNum(arr: number[]): number[] {
                return arr.sort((i, o) => i - o)
            }
            
            // 函数重载
            // function allSort(arr: string): string
            function allSort<T>(arr: T): T
            function allSort(arr: any): any {
                if (typeof arr === 'string') {
                    return quiteSort(arr.split("")).join("")
                }
            
                if (arr instanceof Array) {
                    if (isChinese(arr)) {
                        return sortChinese(arr)
                    }
                    let newArr = arr.map(item => {
                        return typeof item === 'string' ? quiteSort(item.split("")).join("") : item;
                    })
                    return quiteSort(newArr as any);
                }
            
                return quiteSort(arr);
            
            }
            
            let chi = ["刘德华", "刘亦菲", "周杰伦", "成都"]
            let yinwen = ["abadf", "b", "cccdd", 'bdadg']
            let num = [1, 34, 4, 44, 5, 6, 2]
            let str = "asdfasdgagasgjlk"
            console.log(allSort(chi));
            console.log(allSort(num));
            console.log(allSort(str));
            let newYi = allSort<string[]>(yinwen);
            let newStr = allSort(str)
            console.log(newYi);
            
            
            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
            edit icon编辑此页open in new window
            下一页
            vue3中div报错解决方案
            傻瓜都能写出计算机可以理解的代码。唯有能写出人类容易理解的代码的,才是优秀的程序员。
            Copyright © 2022 YY

            该应用可以安装在您的 PC 或移动设备上。这将使该 Web 应用程序外观和行为与其他应用程序相同。它将在出现在应用程序列表中,并可以固定到主屏幕,开始菜单或任务栏。此 Web 应用程序还将能够与其他应用程序和您的操作系统安全地进行交互。

            详情