題目以下:數組
第一題: 給定一個多爲數組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; }