1. 程式人生 > >蒐集前段面試題,自己嘗試做解答!

蒐集前段面試題,自己嘗試做解答!

題目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)