4.多维数组变一维切去重

205 阅读1分钟

给定一个一维数组,如[1, 3, [4, 5, 6, [3, 5, 7, 9]]]。 要求变成一维数组且去重为 [1, 3, 4, 5, 6, 7, 9]

JS技巧降维

  let arr=[1, 3, [4, 5, 6, [3, 5, 7, 9]]];
        //3种降维方法
        //方法一:使用数组的join()
        let newArr1 = arr.join().split(',');
        console.log(newArr1);
        // 方法二:使用toString()方法
        let newArr2 = arr.toString().split(',');
        console.log(newArr2);
        // 方法三: 使用空字符串的方法
        let newArr3 = (arr + '').split(',');
        console.log(newArr3);

        //去重
        var newarr1=unique(newArr1);
        console.log(newarr1);
        var newarr2=unique(newArr2);
        console.log(newarr1);
        var newarr3=unique(newArr3);
        console.log(newarr1);

        function unique(arr){
            var Arr=[];
            for(var i=0;i<arr.length;i++)
            {
                if(Arr.indexOf(arr[i])===-1)//indexOf()返回某个指定的字符串值在字符串中首次出现的位置。如果为-1则为Arr中没有arr[i]这个值
                {
                    Arr.push(arr[i]);
                }
            }
            return Arr;
        }

递归降维

    let arr=[1, 3, [4, 5, 6, [3, 5, 7, 9]]];
    var newarr=[];
    function jc(arr) {        
        for(var i=0;i<arr.length;i++){
            if(arr[i] instanceof Array){
                jc(arr[i]);
            }
            else{
                newarr.push(arr[i]);
            }
        }
    }
    jc(arr);