蒐集前段面試題,自己嘗試做解答!
阿新 • • 發佈:2018-12-25
題目1,有一個數組[123,454,1231,567,897,12] 請取出這個陣列中最大的三個數!
var arr=[] //儲存取出的數 var aa=[1253,123,54,65,1233] function getMax(arr1,arr2,length){ for(var i=0;i<length;i++){ var step1=Math.max.apply(null,arr2)//核心!使用apply把陣列化為引數傳入 arr1.push(step1) var step2=arr2.indexOf(parseFloat(step1)) arr2.splice(step2,1) } } getMax(arr,aa,3)//第一個引數儲存結果,第二個引數處理的資料,第三個引數限制條件 alert(arr)
題目2,判斷一個字串是否滿足YYYY-MM-DD日期格式!(日期保證絕對有效)
解題思路!
1、判斷閏年
普通閏年:普通情況求閏年只需除以4可除盡即可 年/4餘數為0
世紀閏年:如果是100的倍數但不是400的倍數,那就不是閏年了,即末兩位都是零的整除400才行
return (year%4==0&&year%100!=0||year%400==0)
2、正則判斷/^\d{4}-\d{2}-\d{2}$/
3、判斷月份天數,一三五七八十臘31天永不差!四六九十一30天,只有二月28,閏年二月29天
if([01,03,05,07,08,10,12].indexOf(month)!=-1&&day!=31){ return false } if([4,6,9,11].indexOf(month)!=-1&&day!=30){ return false } if(month=02&&閏&&day!=29){ return false } if(month=02&&!閏&&day!=28){ return false }
完整程式碼!
var date='2013-12-34' function dateStyle(date){ var result =true//最終返回結果 var reg=/^\d{4}-\d{2}-\d{2}$/ var arr=date.split('-') if(!reg.test(date)){ return false }else{var leapYear=(arr[0]%4==0&&arr[1]%100!=0||arr[2]%400==0)} if([01,03,05,07,08,10,12].indexOf(arr[1])!=-1&&arr[2]!=31||arr[1]>12){ return false } if([4,6,9,11].indexOf(arr[1])!=-1&&arr[2]!=30)||arr[1]>12{ return false } if(arr[1]=02&&leapYear&&arr[2]!=29){ return false } if(arr[1]=02&&!leapYear&&arr[2]!=28){ return false } return true } dateStyle(date)