/*编写一个方法,对传入的参数进行排序*/
//考察arguments对象,对象属性的遍历
function sortArguments(){ var arr=[]; for(var key in arguments){ arr.push(arguments[key]); } return arr.sort(); }
/**
*@desc: fibonacci
*@param: count {Number}
*@return: result {Number} 第count个fibonacci值,计数从0开始
fibonacci数列为:[1, 1, 2, 3, 5, 8, 13, 21, 34 …]
则getNthFibonacci(0)返回值为1
则getNthFibonacci(4)返回值为5 */
//规律:第三个数是前两个数之和
function fibonacci(n){
var arr=[1,1];
if (n==1) return arr[0];
if (n==2) return arr;
for (var i = 2; i < n; i++) {
arr[i]=arr[i-2]+arr[i-1];
};
return arr;
}
/*.有这样一个URL,http://mail.163.com/?a=1&b=2&c=3&d=xxx&e。
输出函数QuerySearch(),其有一个参数name,输出其对应的value。
*/
考察的是字符串操作
思路:str.split(‘?’)[1]返回的是问号后面的字符串
再使用一次split(‘&’)返回的是数组
通过遍历数组元素字符串,使用indexOf()判断输入的name+'='是否为-1,如果是就表明不存在,遍历下一个,如果不为-1,表明存在,返回该数组元素中的=后面的值,使用slice(start),start是(name+'=').length
function querySearch(url,name){ var arr=url.split('?')[1].split('&'); var msg=name+'='; for (var i = 0; i < arr.length;) { var index=arr[i].indexOf(msg); if (index<0) { i++; }else{ start=msg.length; return arr[i].slice(start) }; }; return "NOT FOUND"; }
/*编写一个方法,去掉一个数组的重复元素。*/
思路:把数组的值一次放入新的数组,放入之前判断已经放入的元素有没有一样的值
newarr.indexOf(arr[i])==-1表示没有
function removeDuplicate(arr) { var result=[]; for (var i = 0; i < arr.length; i++) { if (result.indexOf(arr[i])==-1) { result.push(arr[i]); }; }; return result; }
/*编写一个JavaScript函数,传入仅包含数字的多维数组,返回拍平后的结果。
(比如,传入[1,[2,3]],返回[1,2,3])*/
思路,arr的join()转化为字符串,再用str的split转化为数组,注意:这时候数组的值是字符串,应该用Number()转化类型,还用到了arr的map方法
function flatten(arr) { //return flatted_arr; var newarr = arr.join().split(","); //字符串类型转化为数字类型 return newarr.map(function(e) { return Number(e) }) }
/*请写一个 getParents 方法让它可以获取某一个 DOM 元素的所有父亲节点。*/
思路:通过id获取该元素,e.parentNode.parentNode....考虑用while语句,语句中先把获取到父元素的tagName存入数组,然后获取到该父元素的父元素,判断是否存在(parent.tagName)
function getParents(id) { var e = document.getElementById(id); var parent = e.parentNode; var arr = []; //while先判断再执行 while (parent.tagName) { arr.push(parent.tagName); parent = parent.parentNode; } console.log(arr) };
/*已知有字符foo="get-element-by-id",写一个function将其转换成驼峰表示法"getElementById" */
思路:arr的split分割成数组,循环遍历数组,使用charAt(0)获取第一个字符变成大写,再使用concat(1)连接剩下的数组,最后再用数组的Join('')连起来
tips:一定要用join(‘’),不然会用逗号连起来
function toUpperNote(str) { var result; var arr; arr = str.split('-'); for (var i = 1; i < arr.length; i++) { arr[i] = arr[i].charAt(0).toUpperCase().concat(arr[i].slice(1)) }; return arr.join(''); }
// 截取location.search,转换为一个对象:
function searchToObject(str) { str = str.slice(1); var arr = str.split("&"); var obj={}, newarr; arr.forEach(function(e) { newarr = e.split("="); if (newarr[0] && newarr[1]) { obj[newarr[0]] = newarr[1] } }); return obj; }
cookie的设置,删除,获取
function setCookie(name,value,path,domain,expires,secure){ var cookie=name+"="+encodeURIComponent(value); if (expires instanceof Date) cookie+="; expires="+expires.toGMTString(); if (path) cookie+="; ="+path; if (domain) cookie+="; domain="+domain; document.cookie=cookie; } function getCookie(){ var cookie={}; var all=document.cookie; if (all===null) return cookie; var list=all.split("; "); for (var i = 0; i < list.length; i++) { var p=list[i].indexOf("="); var name=list[i].substring(0,p); var value=list[i].substring(p+1); value=decodeURIComponent(value); cookie[name]=value; } return cookie; } function delCookie(name,path,domain,secure){ //必须要设置成相同的域和路径才可以 var cval=getCookie().name; if (cval!=null) { document.cookie=name+"="+cval+ "; max-age=0"; }; }
实现深度克隆
function deepClone(obj){ var result,oClass=isClass(obj); //确定result的类型 if(oClass==="Object"){ result={}; }else if(oClass==="Array"){ result=[]; }else{ return obj; } for(key in obj){ var copy=obj[key]; if(isClass(copy)=="Object"){ result[key]=arguments.callee(copy);//递归调用 }else if(isClass(copy)=="Array"){ result[key]=arguments.callee(copy); }else{ result[key]=obj[key]; } } return result; } //返回传递给他的任意对象的类 function isClass(o){ if(o===null) return "Null"; if(o===undefined) return "Undefined"; return Object.prototype.toString.call(o).slice(8,-1); }
页面所有的checkbox
(function getCheckbox() { var oInput = document.getElementsByTagName("input"); var len = oInput.length; var aList = []; while (len--) { //while的效率比较高 if (oInput[len].type == "checkbox") { aList.push(oInput[len]); }; } console.log(aList) ; })();
.输出今天的日期,以YYYY-MM-DD的方式,比如今天是2014年9月26日,则输出2014-09-26
function getMydate(){ var date=new Date; var year=date.getFullYear(); var month=date.getMonth()+1; var day=date.getDate(); day = day < 10 ? '0' + day : day;//如果小于10加上0 return year+"-"+month+"-"+day; }