任意數(shù)求和
function sum(){
var total = 0;
for(var i=0;i<arguments.length;i++){
var cur = Number(arguments[i])
if(!isNaN(cur)){
total += cur;
}
}
console.log(total);
}
9*9乘法表
var str = '';
str+='<ul>';
i 行
for(var i=1;i<=9;i++){
str+='<li>';
span i
j 列
for(var j=1;j<=i;j++){
str+='<span>';
i=3 j=2
str+= j+' * '+i+' = '+i*j;
2*3=6
str+='</span>';
}
str+='</li>';
}
str+='</ul>';
數(shù)組去重
var obj = {};
for(var i=0;i<ary.length;i++){
var cur = ary[i];
if(obj[cur]==cur){
ary[i] = ary[ary.length-1];
i--;
continue;
}
obj[cur] = cur;
}
sort思想
Array.prototype.rmsame=function(){
var ary=this.sort(function(a,b){return a-b});
for(var i=0; i<ary.length; i++){
if(ary[i]===ary[i+1]){
ary.splice(i,1);
i--;
}
}
return ary;
};
雙循環(huán)思想
Array.prototype.rmsame=function(){
//this->實(shí)例孩饼;
for(var i=0; i<this.length; i++){
var oLi=this[i];
for(var j=i+1; j<this.length; j++){
if(oLi===this[j]){//說明重復(fù)了
this.splice(j,1);
j--;
}
}
}
return this;
};
快速排序
var ary = [1,2,6,5,3,8,7];
function quickSort(ary){
if(ary.length<=1){
return ary;
}
var cenVal = ary.splice(0,1)[0];
var left = [];
var right = [];
for(var i=0;i<ary.length;i++){
var cur = ary[i];
if(cur<cenVal){
left.push(cur)
}else{
right.push(cur);
}
}
return quickSort(left).concat([cenVal],quickSort(right))
}
console.log(quickSort(ary));
插入排序
var array = [4,3,2,5,6,7,1]
function insertSort(ary){
var left = [];
left.push(ary[0]);
for(var i=1;i<ary.length;i++){
var cur = ary[i];
for(var j=left.length-1;j>=0;j--){
if(cur<left[j]){
if(j==0){
left.unshift(cur);
}
continue;
}else{
left.splice(j+1,0,cur);
break;//循環(huán)結(jié)束,就不再比較
}
}
}
return left;
}
var a = insertSort(array);
console.log(a);
冒泡排序
for(var i=0;i<ary.length-1;i++){
for(var j=0;j<ary.length-1-i;j++){
if(ary[j]>ary[j+1]){
ary[j] = ary[j]+ary[j+1];
ary[j+1] = ary[j]-ary[j+1];
ary[j] = ary[j]-ary[j+1];
}
}
}
console.log(ary);
判斷是否為公有屬性方法的封裝
function hasPubProperty(attr,obj){
return attr in obj && !obj.hasOwnProperty(attr);
}
forEach的封裝
Array.prototype.myForEach=function(callback,context){
//this ->實(shí)例竹挡;ary ary1
context=context||window;
if('forEach' in Array.prototype){//標(biāo)準(zhǔn)瀏覽器的處理镀娶;
this.forEach(callback,context);
return;
}
for(var i=0; i<this.length; i++){//1)callback被調(diào)用的次數(shù);
callback.call(context,this[i],i,this);//2)callback傳參揪罕;3)this指向梯码;
}
}
map的封裝
Array.prototype.myMap=function(callback,context){
context=context||window;
//瀏覽器判斷-性能優(yōu)化
if('map' in Array.prototype){
return this.map(callback,context);
}
var ary=[];
for(var i=0; i<this.length; i++){
var res=callback.call(context,this[i],i,this);
ary.push(res);
}
return ary;
}
類數(shù)組轉(zhuǎn)數(shù)組
function makeArray(arg){
var ary=[];
try{
return Array.prototype.slice.call(arg);
}catch (e){
for(var i=0; i<arg.length; i++){
ary.push(arg[i]);
}
return ary;
}
}
求平均數(shù)
function average(){
var ary=Array.prototype.slice.call(arguments);
ary.sort(function(a,b){return a-b});
ary.pop();
ary.shift();
return (eval(ary.join('+'))/ary.length).toFixed(2)
}
alert(average(1.777,9.237,6.777,8.477,3.733))
三種排序
思路1:sort排序
var ary=[20,3,12,6,34,5]
ary.sort(function(a,b){return a-b});
var max=ary.pop(),min=ary.shift();
console.log(max,min)
思路2:假設(shè)法-假設(shè)法假設(shè)的數(shù)字
var max=ary[0];
var min=ary[0];
for(var i=0; i<ary.length; i++){
if(ary[i]>max) max=ary[i];
if(ary[i]<min) min=ary[i];
}
思路3:Math.max配合eval
var str1=ary.toString();
alert(eval('Math.max('+str1+')'))
alert(eval('Math.min('+str1+')'))
思路4
alert(Math.max.apply(undefined,ary))
倒計(jì)時(shí)
countDown();
setInterval(countDown,1000);
function toDou(n){
return n>=0 && n<10?'0'+n:''+n;
}
function countDown(){
var oDate=new Date();
var s=Math.floor((new Date('2016/11/3 18:00:00')-oDate)/1000);
//秒轉(zhuǎn)換用%的思想:24*60*60=86400;
var d=Math.floor(s/86400);//整數(shù)部分求的是天數(shù)
s%=86400;//剩下的秒數(shù);
var h=Math.floor(s/3600);//整數(shù)部分是小時(shí)好啰;
s%=3600;
var m=Math.floor(s/60);//整數(shù)部分是分轩娶;
s%=60;//剩下的秒數(shù);
var str=toDou(d)+'天 '+toDou(h)+':'+toDou(m)+':'+toDou(s);
oSpan.innerHTML=str;
}
獲取隨機(jī)驗(yàn)證碼
思路1:for循環(huán)
var strCode='abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789';
var str='';
for(var i=0; i<4; i++){
var rnd=Math.round(Math.random()*61);
//如果字符串中沒有框往,放字符串中拼接鳄抒,如果字符串中有了;預(yù)防塌陷
if(str.indexOf(strCode.charAt(rnd)) == -1){
str+=strCode.charAt(rnd);
}else{
i--;
}
}
思路2:while循環(huán)
while(str.length<4){
var rnd=Math.round(Math.random()*61);
if(str.indexOf(strCode.charAt(rnd)) == -1){
str+=strCode.charAt(rnd);
}
}
求最大值和最小值
思路1:sort排序
var ary=[18,2,6,23,9];
ary.sort(function(a,b){return a-b});
var max=ary.pop();
var min=ary.shift();
思路2:假設(shè)法
var max=ary[0];
var min=ary[0];
for(var i=0; i<ary.length; i++){
var cur=ary[i];
if(cur>max) max=cur;
if(cur<min) min=cur;
}
alert(max);
alert(min);
思路3:Math.max 配合 eval;
var max=eval('Math.max('+ary.toString()+')');
var min=eval('Math.min('+ary.toString()+')');*/
思路4:apply
var max=Math.max.apply(null,ary);
alert(max);
求平均值
function average(){
//1.類數(shù)組轉(zhuǎn)數(shù)組
var ary=Array.prototype.slice.call(arguments);
//2.sort排序
ary.sort(function(a,b){return a-b});
//3.掐頭去尾
ary.pop(); ary.shift();
//4.求平均值
return (eval(ary.join('+'))/ary.length).toFixed(2)
}
alert(average(9.777,3.777,2.777,14.757,58.773))
求出現(xiàn)次數(shù)最多的單詞
var str='aaaccccbbbdddCCCCCAAAAABbbbAAAAcccDDdDD';
//1.把字符串進(jìn)行排序
str=str.split('').sort(function(a,b){return a.localeCompare(b)}).join('');
//2.重復(fù)子項(xiàng) 和 arguments(字符串replace方法)椰弊;
var max=0;
var maxStr='';
str.replace(/(\w)\1+/gi,function($0,$1){
//$0:計(jì)算出單詞出現(xiàn)的次數(shù)许溅; $1:找出出現(xiàn)次數(shù)對(duì)應(yīng)的單詞;
if($0.length>max) {
max=$0.length;
maxStr=$1;
}else if($0.length===max){
maxStr+=$1;
}
});
思路2:用重復(fù)子項(xiàng)秉版;
str=str.split('').sort(function(a,b){return a.localeCompare(b)}).join('');
var max=0;
var maxStr='';
str.replace(/(\w)\1+/gi,function($0,$1){
if($0.length>max){
max=$0.length;
maxStr=$1;
}else if($0.length==max){
maxStr+=','+$1;
}
});*/
/*//利用對(duì)象不重名的特性贤重;求出現(xiàn)次數(shù)最多的單詞,以及出現(xiàn)多少次清焕?
var obj={};
for(var i=0; i<str.length; i++){
var cur=str[i].toLowerCase();
if(obj[cur]){
obj[cur]++;
}else{
obj[cur]=1;
}
}
2.用假設(shè)法求出出現(xiàn)最多的次數(shù)并蝗;
var max=obj.d;
for(var attr in obj){
if(obj[attr]>max) max=obj[attr];
}
3.根據(jù)次數(shù)求出出現(xiàn)次數(shù)最多的單詞,出現(xiàn)次數(shù)最多的單詞可能有多個(gè)耐朴;
var ary=[];
for(var attr in obj){
if(obj[attr]==max){
ary.push(attr);
}
}
console.log('出現(xiàn)次數(shù)最多的單詞'+ary+'借卧;出現(xiàn)'+max+'次');*/
日期格式化封裝
轉(zhuǎn)數(shù)組思路1.把字符串中的數(shù)字,成組的拎出來,放到數(shù)組中去筛峭;
var strCode = '2016-6-23 00:41:30';
var tmp = '{0}年{1}月{2}日';
/*var reg=/^(\d{4})[\-](\d{1,2})[\-](\d{1,2})\s+(\d{1,2})[\:](\d{1,2})[\:](\d{1,2})$/;
var ary=[];
strCode.replace(reg,function(){
ary=Array.prototype.slice.call(arguments,1,arguments.length-2);
});
轉(zhuǎn)數(shù)組思路2:
var ary=strCode.match(/\d+/g);
var ary=strCode.split(/\D+/g);
//需求:strCode.formatDate(tmp);->"2016年11月6日 11時(shí)5分30秒";
String.prototype.formatDate = function (tmp) {
//this->實(shí)例铐刘;
//1.把實(shí)例字符串中的數(shù)組存到數(shù)組中;
var ary=this.match(/\d+/g);
//2.拿數(shù)組中的內(nèi)容影晓,替換模板
var tmpStr=tmp||'{0}年{1}月{2}日 {3}時(shí){4}分{5}秒';
tmpStr=tmpStr.replace(/{(\d)}/g,function($0,$1){
var n=ary[$1];
n=n>=0 && n<10? '0'+Number(n):n;
return n;
});
return tmpStr;
}
console.log(strCode.formatDate(tmp));
獲取地址欄中的參數(shù)
var str='www.baidu.com?name=zhfueng&age=8&sex=undefined';
//{name:zhfueng,age:8};
/*var reg=/([^?=&]+)=([^?=&]+)/g;
var obj={};
str.replace(reg,function($0,$1,$2){
obj[$1]=$2;
});
console.log(obj);*/
//需求:str.queryURLParameter(); ->鍵值對(duì)的對(duì)象镰吵;{name:zhfueng,age:8}
String.prototype.queryURLParameter=function(){
//this->實(shí)例字符串
var reg=/([^?=&]+)=([^?=&]+)/g;
var obj={};
this.replace(reg,function($0,$1,$2){
obj[$1]=$2;
})
return obj;
}
console.log(str.queryURLParameter());
exec封裝match
var str='zhufeng2016zhanwang2017huigu2015';
var reg=/\d+/g;
String.prototype.myMatch=function(reg){
//this-實(shí)例str
var res=reg.exec(this);
var ary=[];
while(res){
ary.push(res[0]);
res=reg.exec(this);
}
return ary;
};
alert(str.myMatch(reg));//[2016,2017,2015]
domReady
function domReady(fn){
if(document.addEventListener){
document.addEventListener('DOMContentLoaded',fn);
}else{
//監(jiān)聽頁(yè)面的變化
document.onreadystatechange=function(){
//當(dāng)頁(yè)面加載完成的時(shí)候,開始執(zhí)行函數(shù)挂签;
if(document.readyState==='complete'){
fn();
}
}
}```
}