数组的一些问题

一、给定一个多维数组arr,实现一个方法获取数组的最大深度(维度)

例1:arr = [1, 2, [3, 4, [5]], 8],则返回3

例2:arr = [1, 2, [5], 8],则返回2

   var  a = 1;
    var arr = [1, 2, [3, 4, [5]], 8]  //3
    //var arr = [1,2,[5],8] //2
    function fn(arr){
        for (i=0;i<arr.length;i++){
            if(arr[i] instanceof Array){
                a++;
                arr = arr[i];
                fn(arr);
            }
        }
        return a;
    }
    console.log(fn(arr));

二、实现一个方法,生成数组[1,2,3,4......,99],然后将数组内的项随机打乱,保证每个数出现在任意一个位置的概率相同

   var arr2 = new Array();
    for (var i = 0; i < 100; i++) {
        arr2.push(i);
    }
    // arr2.sort(() => Math.random() - 0.5); //ES6
    arr2.sort(function () {
        return Math.random() - 0.5;
    });
    console.log(arr2);

三、给定一个数组arr和一个数值target,数组内的每一项都是数字。如果数组中某两项下,x,y相加等于target,则把这两项以[x,y]的格式放到一个空数组中。写一个方法,获得有满足条件的项,并返回最后的数组。

注:如[4,6] 与 [6,4]则是为等价,只允许在结果中出现一次。

例1:arr = [1, 2, 4, 7, 3, 6],target = 10,则返回:[ [ 4 , 6 ] , [ 7 , 3 ] ]

例2:arr = [1, 2, 4, 7],target = 10,则返回:[  ]

   var arr = [1, 2, 4, 7, 3, 6];
    var target = 10;
    var brr = [];
    for (var i = 0; i < arr.length; i++) {
        for (let j = i; j < arr.length; j++) {
            if (arr[i] + arr[j] == target) {
                var crr = [];
                crr.push(arr[i]);
                crr.push(arr[j]);
                brr.push(crr)
            }
        }
    }
    console.log(brr)

 

posted @ 2019-10-16 09:27  SHY13  阅读(150)  评论(0编辑  收藏  举报