数组的一些问题
一、给定一个多维数组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)