• 记录使用 TypeScript 对数组的一些处理


    1. 把数组[102, 104, 207, 213, 313, 414, 515, 516] 变成

    {'2': [102] ,4: [104], 7: [207],13: [213, 313],14: [414],15: [515],16: [516]\}的格式

    const groupBy = function (obj, iterator) {
        var result = {};
        for (var i = 0; i < obj.length; i++) {
            var value = obj[i];
            var index = i;
            var key = iterator(value, index);
            (result[key] || (result[key] = [])).push(value);
        }
        return result;
    };

    调用方式

    let arr = [102, 104, 207, 213, 313, 414, 515, 516];

    let ng = groupBy(arr, function (n) { 这个方法不会改变原数组
                let value = n % 100;
                return value;

    });

    2. 把上面得到的数据做一个排序,按照数组长度排序

     const sortByLen = function (obj) {
        var arr = [];
        for (var i in obj) {
            arr.push(obj[i]);
        }
        // console.warn("=====arr:",arr)
        arr.sort(function (left, right) {
            var a = left.length, b = right.length;
            return a - b;
        })
        // console.warn("===2222==arr:",arr)
        return arr;
    };

    调用方式

    let xxc2 = sortByLen(ng);

     得到//   =====xxc2: [ [ 411 ],
            // [ 109, 209 ],
            // [ 312, 312 ],
            // [ 516, 516 ],
            // [ 108, 108, 408 ],
            // [ 310, 410, 410 ],
            // [ 517, 517, 517 ],

    2. 把上面得到的数据做一个排序,按照数值排序

    const sortByVal = function (obj) {
        var arr = obj.concat();
        // console.warn("=====arr:",arr)
        arr.sort(function (left, right) {
            var a = left[0] % 100, b = right[0] % 100;
            if (a == 1) a = 14;
            if (b == 1) b = 14;
            return a - b;
        })
        // console.warn("===2222==arr:",arr)
        return arr;
    };

    调用方式

    let xxc2 = sortByVal(ng);

    得到//=====xxc2: [[102,102,102],[103,103,103],[105,105],[104,104]]

  • 相关阅读:
    Spring更简单保存和获取bean对象的方法(注解)
    jwt_拦截器_校验token
    借教室——二分、前缀和、差分
    从ReentrantLock角度解析AQS
    Vue 2.0的源码目录设计
    Eigen C++之Eigen库基本使用(下)
    Go:微服务架构下的单元测试(基于 Ginkgo、gomock 、Gomega)
    lc 349. 两个数组的交集
    [附源码]Python计算机毕业设计Django通用病例管理系统
    Python 的内置方法
  • 原文地址:https://blog.csdn.net/Lost_the_wind/article/details/125407688