对多维数组进行数据平铺处理,并进行去重排序

这篇博客探讨了如何使用JavaScript处理多维数组,包括数据平铺、去重和排序。示例代码展示了如何递归地平铺数组,然后通过比较和去重操作对结果进行排序,最后封装成闭包方法。这种方法对于处理复杂数据结构非常有用。
摘要由CSDN通过智能技术生成

对多维数组进行数据平铺处理,并进行去重排序

   var a = [
            [1, 2, 3, 11],
            [2, 3, 5, 1, [12, 22, 33, [31, 32, 53]]],
            [1, 5, 6],
            [2, 8, 4], 9, 10, 2, 1
        ];

        console.log(a);
        var b = [];
        test(a)
        console.log(b);

        var d = []
        for (let x = 0; x < b.length; x++) {
            for (let y = x + 1; y < b.length; y++) {
                if (b[x] < b[y]) {
                    c = b[x]
                    b[x] = b[y]
                    b[y] = c
                }
            }
            if (d.indexOf(b[x]) === -1) {
                d.push(b[x])
            }
        }

        console.log(d);
        // 循环平铺
        function test(arr) {
            for (let i = 0; i < arr.length; i++) {
                test2(arr[i])
            }
        }

        // 该方法最多只能平铺二维数组  不能理解  请大家指教
        function test(arr) {
            for (let i = 0; i < arr.length; i++) {
                  if (Array.isArray(arr)) {
                test(arr)
            } else {
                b.push(arr)
            }
            }
        }

        // 循环判断
        function test2(arr) {
            if (Array.isArray(arr)) {
                test(arr)
            } else {
                b.push(arr)
            }
        }

在这里插入图片描述

闭包方式封装平铺方法并调用


//闭包方式封装平铺方法并调用

     var a = [
            [1, 2, 3, 11],
            [2, 3, 5, 1, [12, 22, 33, [31, 32, 53]]],
            [1, 5, 6],
            [2, 8, 4], 9, 10, 2, 1
        ];
   var b = [];
   
   var abc = new test();
     b = abc.tile(a)

  function test() {
            var a = {
                test: [],
                test2:[],
                tile: function (arr) {
                    for (let i = 0; i < arr.length; i++) {
                        a.tile2(arr[i])
                    }
 
                    return a.test2
                },
                tile2: function (arr) {
                    if (Array.isArray(arr)) {
                        a.tile(arr)
                    } else {
                        a.test2.push(arr)
                    }
                }
            }
            return a
        }
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值