题目以下:数组
第一题: 给定一个多为数组arr,实现一个方法获取数组的最大深度(维度)app
例子1:arr=[1,2,[3,4,[6]]] 则返回3 例子2:arr=[3,4,[6]] 则返回2 最终代码:(此处只解决单项维度问题) var arr=[5,[6,7,8,[3,[9]]]] function deep(arr,count=0){ count++; for(var i=0;i<arr.length;i++){ if(Object.prototype.toString.call(arr[i]) == '[object Array]'){ count= deep(arr[i],count); } } return count; } console.log(deep(arr)) 未解决多项维度问题,例如:arr=[1,2,[3,4,5],[2,3,4[6]]]; 最终代码1: var arr= [1,2,[3,4],[5,6,7,[9]]] function test4(arr = []) { let arrDeepLen = []; for (let i = 0; i < arr.length; i++) { let item = arr[i]; if (Array.isArray(item)) { const c= test1(item); arrDeepLen.push(c+1); } } function test1(arr = [], count = 0) { count++; for (let i = 0; i < arr.length; i++) { const item = arr[i]; if (Array.isArray(item)) { count = test1(item, count); } } return count; } return Math.max.apply(null,arrDeepLen); } 最终代码2: function deep(arr, count = 0, num = []) { count++ for (let index in arr) { if (Array.isArray(arr[index])) { deep(arr[index], count, num) } else { num.push(count) } } return Math.max.apply(null, num) } let arr = [1, 2, 3, ['n', 'i', ['t', ['nihao']]], ['a', 'b']] console.log(deep(arr)) 考察范围:回调,此处注意回调堆栈的执行顺序,须要对每次执行返回的数赋值
第二题: 实现一个方法,生成数组[1,2,3,4,...99],而后将数组内的项随机打乱,每个数 出如今任意一位置的几率相同。dom
最终代码:prototype
function randomArray(){ let arr=[]; for(var i=0;i<100;i++){ arr.push(i) } arr.sort(function(){return Math.random()-0.5}); return arr; } randomArray()
第三题:给定一个数组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 则返回:[]code
最终代码:get
let arr=[1,2,3,5,7,8]; function test(arr,target=10){ let newArr =[] for(var i=0;i<arr.length;i++ ){ for(var j=i+1;j<arr.length;j++){ let sum=arr[i] + arr[j] if(sum === target){ newArr.push([arr[i],arr[j]]); } } } return newArr; }