记录使用 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]]

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值