1.类型判断
函数myType用于根据输入参数返回相应的 类型信息。
语法如下:
var str = myType (param);
使用范例如下:
myType (1); 返回值: “number”
myType (false); 返回值: “boolean”
myType ({}); 返回值: “object”
myType ([]); 返回值:” Array”
myType (function(){}); 返回值:”function”
myType (new Date()); 返回值: “Date”
请写出函数myType的实现代码。
function myType(param){
return (param===null||param===undefined)?param:param.constructor&¶m.constructor.toString().match(/function\s*([^(]*)/)[1];
}
附加一道判断标准类型和内置对象类型的方法
function type(obj) {
var type = Object.prototype.toString.call(obj).slice(8, -1).toLowerCase(); //标准类型和内置对象类型判断
return type;
}
2.二分查找
函数search用于在一个已排序的数字数组中查找指定数字。
语法如下:
var index = search(arr, dst);
使用范例如下:
var arr = [1, 2, 4, 6, 7, 9, 19,20, 30, 40, 45, 47];
search(arr, 45); 返回值: 10
请写出函数search的实现代码 请给出函数,要求不能使用Array的原型方法,且算法时间复杂度低于O(n)。
function search(arr,dst,low,high){
var high=high || arr.length-1;
var low=low || 0;
var mid=Math.floor((low+high)/2);
if(low<=high){
if(dst===arr[mid]){
return mid;
}else if(dst<arr[mid]){
return search(arr,dst,low,mid-1);
}else if(dst>arr[mid]){
return search(arr,dst,mid+1,high);
}
}
return -1;
}
search(arr,19);//6
search(arr, 45);//10
3.日期格式化
函数formatDate用于将日期对象转换成指定格式的字符串,语法如下:
var str = formatDate(date, pattern);
其中pattern的全格式为”yyyy-MM-dd HH:mm:ss”
使用范例如下:
var date = new Date(2001, 8, 11, 8, 26, 8);
formatDate(date, “yyyy”); 返回值: “2001”
formatDate(date, “yyyy-MM-dd”); 返回值: “2001-09-11”
formatDate(date, “yyyy-MM-dd HH”); 返回值: “2001-09-11 08”
formatDate(date, “yyyy-MM-dd HH:mm:ss”); 返回值:”2001-09-11 08:26:08”
请写出函数formatDate的实现代码。
方法一实现代码:
var date = new Date(2001, 8, 11, 8, 26, 8);
function formatDate(date,pattern) {
var d = {
year:date.getFullYear(),
month:date.getMonth() < 10 ? '0'+date.getMonth() :date.getMonth() ,
day:date.getDate() < 10 ? '0'+date.getDate() : date.getDate(),
hours:date.getHours() < 10 ? '0'+date.getHours() : date.getHours(),
minutes:date.getMinutes() < 10 ? '0'+date.getMinutes():date.getMinutes(),
seconds:date.getSeconds() < 10 ? '0'+date.getSeconds():date.getSeconds()
},str;
switch(pattern) {
case "yyyy":
str = d.year;
break;
case "yyyy-MM-dd":
str = d.year+'-'+d.month+'-'+d.day;
break;
case "yyyy-MM-dd HH":
str = d.year+'-'+d.month+'-'+d.day+' '+d.hours;
break;
case "yyyy-MM-dd HH:mm:ss":
str = d.year+'-'+d.month+'-'+d.day+' '+d.hours+':'+d.minutes+':'+d.seconds;
break;
default:
break;
}
return str;
}
formatDate(date, "yyyy");
formatDate(date, "yyyy-MM-dd");
formatDate(date, "yyyy-MM-dd HH");
formatDate(date, "yyyy-MM-dd HH:mm:ss");
方法二的实现代码:
function formatDate (date,pattern) {
pattern=pattern.replace(/yyyy/,date.getFullYear());
pattern=pattern.replace(/MM/,(date.getMonth()>10?date.getMonth():('0'+date.getMonth())));
pattern=pattern.replace(/dd/,(date.getDate()>10?date.getDate():('0'+date.getDate())));
pattern=pattern.replace(/HH/,(date.getHours()>10?date.getHours():('0'+date.getHours())));
pattern=pattern.replace(/mm/,(date.getMinutes()>10?date.getMinutes():('0'+date.getMinutes())));
pattern=pattern.replace(/ss/,(date.getSeconds()>10?date.getSeconds():('0'+date.getSeconds())));
return pattern;
}
var date = new Date(2001,8,11,8,26,8);
console.log(formatDate(date,"yyyy-MM-dd HH:mm:ss"));