小試牛刀——JavaScript基礎(chǔ)部分

二.屬性操作,圖片切換,短信發(fā)送模擬

2.1 HTML屬性操作

html屬性操作:讀 寫
屬性名
屬性值
屬性讀操作:獲取 找到
元素.屬性名

屬性寫操作: ("添加")替換,修改
元素.屬性名=新的值
oP.innerHTML 讀取元素內(nèi)的所有HTML內(nèi)容
oP.innerHTML=新值 替換元素內(nèi)的所有HTML內(nèi)容

2.2條件判斷

if(條件){
...
}

if(條件){
}else{
...
}

if(條件1){
}else if(條件2...){
}else{
}

2.3 數(shù)組應(yīng)用及實例應(yīng)用
2.8 圖片切換及函數(shù)合并擴(kuò)展模擬短信作業(yè)

三.for應(yīng)用,自動生成,this關(guān)鍵字

3.1 動態(tài)方法:ByTagName()

var oUl=document.getElementById("list") -- 靜態(tài)方法
var aLi=oUl.getElementByTagName("li") -- 動態(tài)方法
document.getElementByTagName("li");
aLi.length
aLi[0]

3.2 ByTagName動態(tài)方法特性

前邊可以放document,也可以用元素
是一堆元素的集合,[]訪問

3.3 初識for循環(huán)
3.4 for循環(huán)執(zhí)行順序

for(var i=0;i<arr.length;i++){
}

3.5 for應(yīng)用:選取 生成 性能

var str="";
for(var i=0;i<100;i++){
str+='<input type="button" value="按鈕" />
}
document.body.innerHTML=str;
//這樣寫生成速度快

3.6 for循環(huán)生成坐標(biāo)
3.7 for循環(huán)遍歷2維數(shù)組,嵌套
3.8 cssText文本格式化與屬性操作
oDiv.onclick=function(){
  //oDiv.style.width='200px';
   oDiv.style.cssText='width:200px;height:200px;
}
//cssText沒有太大兼容性問題 比較好用 沒有改變原屬性
3.9 綜合實力:生成一組新聞及思路分析
3.10 this指向及this應(yīng)用

this:這個
this:指的是調(diào)用當(dāng)前方法(函數(shù))的那個對象
window是JS老大

四.自定義屬性,索引值

4.1 自定義屬性,自定義一組開關(guān)應(yīng)用

JS可以為任何的html元素添加任意個自定義屬性

for(var i=0;i<arr.length;i++){
  arr[i].onOff=true;
  arr[i].onclick=function(){
      if(this.onOff){
      ...
        this.onOff=false;
      }else{
      ...
        this.onOff=true;
      } 
  }
}
4.2 獲取自身遞增數(shù)字及匹配數(shù)組內(nèi)容
        var aBtn=document.getElementsByTagName("input");
          var arr=['A','B','C','D'];
          for(var i=0;i<aBtn.length;i++){
                aBtn[i].num=0;
                aBtn[i].onclick=function(){
                    this.value=arr[this.num]
                    this.num++;
                    if(this.num===arr.length){
                        this.num=0;
                    }
                }
            }
4.3 添加索引值 匹配數(shù)組 HTML元素
  var aBtn=document.getElementsByTagName("input");
            for(var i=0;i<aBtn.length;i++){
                aBtn[i].index=i;
                aBtn[i].onclick=function(){
                    this.value=this.index;
                }
            }
4.4 圖片切換綜合實例
4.8 QQ菜單實例2:實現(xiàn)點擊高亮顯示,3道作業(yè)要求

五.JS數(shù)據(jù)類型,類型轉(zhuǎn)換

5.1 JS數(shù)據(jù)類型及相關(guān)操作

js中的數(shù)據(jù)類型 原始類型: Number String Boolean null undefined
引用類型:函數(shù) 對象(obj [] {} )
typeof 判斷數(shù)據(jù)類型
str.charAt() 根據(jù)下標(biāo)獲取子字符串

5.2 數(shù)據(jù)類型轉(zhuǎn)化Number

var a="100";
Number(a);//100
var a="";
Number(a)://0
var a=true;
Number(a);//0
var a=[];
Number(a);//0
var a="w";
Number(a);//NaN

5.3 parsetInt與parsetFloat的區(qū)別

var a="200px"
parsetInt(a)//20
var a="200.332px"
parseFloat(a);//200.332

5.4 Js中稀奇古怪的隱式類型轉(zhuǎn)換

+ - * / %
++ --
><
!
==

5.5 isNaN應(yīng)用實例

一旦程序中出現(xiàn) NaN 肯定是進(jìn)行了非法的運算操作
is Not a Number 不是數(shù)字
isNaN();//true false

5.6 數(shù)據(jù)類型轉(zhuǎn)換所對應(yīng)的小練習(xí)

六.函數(shù)傳參,重用,價格計算

6.1函數(shù)傳參 參數(shù)類型

函數(shù)傳遞參數(shù) 參數(shù)=js的數(shù)據(jù)類型 數(shù)字 字符串 布爾 函數(shù) 對象 未定義

6.2 傳參應(yīng)用 類型判斷及多組

盡量保證HTML代碼結(jié)構(gòu)一致 可以通過父級選取子元素
把核心主程序?qū)崿F(xiàn),用函數(shù)包起來
把每組里不同的值找出來,通過傳參實現(xiàn)

七.作用域,JS預(yù)解析機(jī)制

7.1 js作用域和預(yù)解析機(jī)制

作用域:
域:空間 范圍 區(qū)域
逐行解讀代碼

7.2 全局與局部作用域解析 作用域鏈

由上到下 由內(nèi)到外

  1. 預(yù)解析:var function 參數(shù)...
    function a(){alert(4)}
    a=....(未定義)X
    遇到重名的:只留下一個
    變量和函數(shù)重名了,就只留下函數(shù)
  2. 逐行解讀代碼
    表達(dá)式:= + / *...
    表達(dá)式可以修改預(yù)解析的值
    alert(a);// function a(){alert(4)}
    var a=1;
    alert(a);//1
    function a(){alert(2)}
    alert(a);//1
    var a=3;
    alert(a);//3
    function a(){alert(4)}
    alert(a);//3
7.3 調(diào)用局部數(shù)據(jù) 全局聲明 for嵌套函數(shù)中i取值
  var a=1;
    function fun(a){
        alert(a);//1
        a=2;
    }
    fun(a);
    alert(a);//1

八.運算符,流程控制

運算符流程控制

判斷: if,switch(case break default),? :
循環(huán):while ,for
跳出:break , continue
什么是真,什么是假
真:非零的數(shù)字,字符串,true,函數(shù),Object:[] {}(存在)
假:零,NaN,空字符串,false,null,未定義

var str="css"
switch(str){
  case "js" : alert("js");
  break;
  case "html" : alert("html");
  default;
  case "css" : alert(str);
}
//三目
alert(12<450?"120<450":"120!<450")

//while循環(huán)
var i=0;
while(i<3){
  alert(i);
  i++
}

//for循環(huán)
for(var i=0;i<3;i++){
  if(i===2){
    break;
   //continue;
    }
alert(i);
}

九.return,定時器基礎(chǔ)

9.1函數(shù)返回值 return詳解應(yīng)用

return返回值 :數(shù)字 字符串 布爾 函數(shù) 對象.......(元素 [] {} null) 未定義----數(shù)據(jù)類型

  1. 函數(shù)名+括號: fn1()==>return后面的值;
  2. 所有函數(shù)默認(rèn)返回值:未定義(undefined)
  3. return 后面的任何代碼都不執(zhí)行了;
9.2 arguments實參集合與局部變量,參數(shù)關(guān)系

arguments是實參 形參可以不要---實參的集合(類數(shù)組集合)

sum(1,2,3);
sum(1,2,3,4);
function sum(){
  var n=0;
  for(var i=0;i<arguments.length;i++){
      n+=argumenst[i];
  }
}
9.3 currentStyle與getComputedStyle應(yīng)用

getComputedStyle(element).width/height/.... //獲取計算機(jī)計算后的樣式
background:url() red... 復(fù)合樣式不要獲取 單一樣式不要做判斷
不要有空格 不要獲取未設(shè)置后的樣式: 不兼容

getStyle(,'width');
function getStyle(obj,attr){
    return obj.currentStyle?obj.currentStyle[attr]:getComputedStyle(obj)[attr];
}
9.4 setInterval詳解,定時器管理,背景選擇實例

定時器:時間概念
setInterval(函數(shù),毫秒);//重復(fù)執(zhí)行
clearInterval(timer) //清除

注意 : 定時器如果是由事件控制的 一定要先關(guān)后開 每次點擊之前先清除一下

9.5 setTimeout詳解,彈窗廣告實例(寫在demo里)
9.6 定時器應(yīng)用-自動切換焦點圖,qq延時菜單實例(寫在demo里)

十.定時器管理,函數(shù)封裝

10.1 定時器管理-開關(guān)設(shè)置

要明白定時器使用規(guī)則 每次定時器執(zhí)行時 要先清除定時器

10.2,10.2 函數(shù)封裝的傳參,判斷處理,正負(fù)值的處理,添加毀掉函數(shù)
     div{width:60px;height:60px;background:red;position:absolute;left:0;top:35px;}
    <input type="button" value="向前" id="btn1">
    <input type="button" value="向后" id="btn2">
    <div id="div1"></div>
    <script>
        /*
        * obj 對象
        * attr css屬性 方向 寬高云云
        * dir 步長
        * target 目標(biāo)
        * endFn 回調(diào)函數(shù)
        * */
        var oBtn1=document.getElementById("btn1");
        var oBtn2=document.getElementById("btn2");
        var oDiv=document.getElementById("div1");
        oBtn1.onclick=function(){
            doMove(oDiv,"left",10,800,function(){doMove(oDiv,"top",10,500)});
        }
        oBtn2.onclick=function(){
            doMove(oDiv,"left",10,0);
        }
        function  doMove(obj,attr,dir,target,endFn){
            dir=parseInt(getStyle(obj,attr))<target?dir:-dir;
            clearInterval(obj.timer);
            obj.timer=setInterval(function(){
                var speed=parseInt(getStyle(obj,attr))+dir;
                if(speed>target&&dir>0||speed<target&&dir<0 ){
                    speed=target;
                }
                obj.style[attr]=speed+"px";

                if(speed===target){
                    clearInterval(obj.timer);
                    endFn&&endFn();
                }
            },50)

        }
        function getStyle(obj,attr){
            return obj.currentStyle?obj.currentStyle[attr]:getComputedStyle(obj)[attr];
        }



    </script>
10.4 doMove應(yīng)用小練習(xí)

引入以上封裝js

 window.onload=function(){
        var str="";
        var len=10;
        var aDiv=document.getElementsByTagName("div");
        var timer=null;
        var num=0;
        var onOff=true;
        for(var i=0;i<len;i++){
            str+='<div style="width:50px;height:50px;background:red;position:absolute;top:0px;left:'+i*60+'px;"></div>'
        }
        document.body.innerHTML=str;
        document.onclick=function(){
            clearInterval(timer);
            timer=setInterval(function(){
                if(onOff){
                    doMove(aDiv[num],'top',30,500);
                    num++;
                    if(num===len){
                        clearInterval(timer);
                        onOff=false;
                        num=0;
                    }
                }else{
                    doMove(aDiv[num],'top',30,0);
                    num++;
                    if(num===10){
                        clearInterval(timer);
                        onOff=true;
                        num=0;
                    }
                }
            },200)

        }
    }
10.5 抖動原理及實現(xiàn)過程

需要引入以上封裝js

 img{width:260px;height:auto;display:block;position:absolute;top:100px;left:250px;}
 window.onload=function(){
        var oImg=document.getElementById("img1");
         oImg.onclick=function(){
            var pos=parseInt(getStyle(oImg,"left"));
            var arr=[];
            var timer=null;
            var num=0;
            for(var i=20;i>0;i-=2){
                arr.push(i,-i)
            }
            arr.push(0);
           clearInterval(timer);
           timer=setInterval(function(){
               oImg.style.left=pos+arr[num]+"px";
               num++;
               if(num===arr.length){
                   clearInterval(timer)
               }
           },50)
        }
    }
10.6 抖的函數(shù)封裝及隱患,修復(fù)及練習(xí)
 img{width:260px;height:auto;display:block;position:absolute;top:100px;left:250px;}
 window.onload=function(){
        var oImg=document.getElementById("img1");
        var onOff=true;
        oImg.onmouseover=function(){
            shake(oImg,'top')
        }
        function shake(obj,attr,endFn){
            if(onOff){
                clearInterval(obj.timer);
                onOff=false;
                var num=0;
                var arr=[];
                var pos=parseInt(getStyle(obj,attr));
                for(var i=20;i>0;i-=2){
                    arr.push(i,-i)
                }
                arr.push(0);

                obj.timer=setInterval(function(){
                    oImg.style[attr]=pos+arr[num]+"px";
                    num++;
                    if(num===arr.length){
                        clearInterval(obj.timer);
                        endFn&&endFn();
                        onOff=true;
                    }
                },50)
            }
        }
    }
    /*
    * 心得:如何在一次事件沒有執(zhí)行完畢之前避免當(dāng)時再次執(zhí)行該事件 找了兩種方法
    * 第一種方法:定義一個開關(guān),讓它為true,在true的條件下執(zhí)行事件 執(zhí)行過程中開關(guān)為false 執(zhí)行完畢開關(guān)再變回true
    * 第二種方法:定義一個遮罩層,再第一次事件執(zhí)行的時候生成 然后就可以防止再次執(zhí)行事件穿透 第一次事件執(zhí)行完畢遮罩層刪掉云云
    *
    * */

十一.日期對象,時鐘倒計時

11.1系統(tǒng)時間對象

系統(tǒng)時間對象 new Date() -----當(dāng)前系統(tǒng)的時間對象
getFullYear()
getMonth()
getDate()
getDay()
getHours()
getMinutes()
getSeconds()

方法名 描述
getFullYear() 返回Date對象"年份"部分的實際數(shù)值
getMonth() 返回Date對象"月份"部分的數(shù)值(0-11)
getDate() 返回Date對象"日期"部分?jǐn)?shù)值(1-31)
getDay() 返回Date對象"星期"部分的數(shù)值(0-6)
getHours() 返回Date對象"小時"部分的數(shù)值(0-23)
getMinutes() 返回Date對象"分鐘"部分的數(shù)值(0-59)
getSeconds() 返回Date對象"秒"部分的數(shù)值(0-59)
getMilliseconds() 返回Date對象"毫秒部分的數(shù)值(0-999)"
getTime() 返回Date對象與UTC時間1970年1月1日午夜之間相差的毫秒數(shù)
getTimezoneOffset() 返回本地時間與格林威治標(biāo)準(zhǔn)時間(GMT)的分鐘差
修改時間信息
setFullYear() 設(shè)置Date對象中"年份"部分的實際數(shù)
setMonth() 設(shè)置Date對象中"月份"部分的數(shù)值(0-11,但不限于)
setDate() 設(shè)置Date對象中"日期"部分的數(shù)值(1-31,但不限于)
setHours() 設(shè)置Date對象中"小時"部分的數(shù)值(0-23,但不限于)
setMinutes() 設(shè)置Date對象中"分鐘"部分的數(shù)值(0-59,但不限于)
setMilliseconds() 設(shè)置Date對象中"毫秒"部分的數(shù)值(0-999,但不限于)
setTime() 以毫秒值設(shè)置Date對象
時間格式轉(zhuǎn)換
toString 返回Date對象的字符串形式
toDateString() 返回Date對象"日期"部分(年月日)的字符串形式
toTimeString() 返回Date對象"時間"部分(時分秒)的字符串形式
toLocaleString() 基于本地時間格式,返回Date對象的字符串形式
toLocalDateString() 基于本地時間,返回Date對象"日期"部分(年月日)的字符串形式
toLocalTimeString() 基于本地時間格式,返回Date對象"時間"部分(時分秒)的字符串形式
toGMTString() 基于GMT時間格式,返回Date對象的字符串形式
toUTCString() 基于UTC時間格式,返回Date對象的字符串形式
11.3 倒計時原理

Date對象參數(shù):
數(shù)字形式: new Date(2017,4,1,9,48,12);
字符串形式: new Date('June 10,2017 12:12:12');
月份取值:January February Match April May June July August September October November December
時間轉(zhuǎn)換公式:
天:Math.floor(t/86400)
時:Math.floor(t%86400/3600)
分:Math.floor(t%86400%3600/60)
秒:t%60
時間戳: getTime()
返回從1970年1月1日0點0分0秒0毫秒

11.4 倒計時實例
function fnTime(){
        var iNow=new Date();
        var iNew=new Date(2018,0,2,18,0,0);
        var t=Math.floor((iNew-iNow)/1000);
        var str=Math.floor(t/60/60/24)+"天"+Math.floor(t%86400/3600)+"時"+Math.floor(t%86400/60)+"分"+Math.floor(t%60)+"秒";
        document.body.innerHTML="距離下班還有: "+str;
    }
    fnTime();
    setInterval(function(){
        fnTime();
    },1000)

十二.字符串,查找高亮顯示

12.1 字符串獲取類,封裝檢測數(shù)字的方法
  1. str.charAt()------對應(yīng)下標(biāo)的內(nèi)容
  2. str.charCodeAt()------對應(yīng)下標(biāo)內(nèi)容的編碼
  3. String.fromCharCode(22937)----根據(jù)編碼轉(zhuǎn)換為字
12.2 fromCharCode返回字符串實例,字符串加密
12.3 indexOf,lastIndexOf
  1. str.indexOf('x',1) ----從左往右找,第一個參數(shù)是一個字符串,默認(rèn)從0開始查找 ,如果有第二個參數(shù)數(shù)字就從數(shù)字指定的位置開始查找 返回-1表示沒找到
  2. str.lastIndexOf('x')----從右往左找 如果第二個參數(shù)為負(fù)數(shù),默認(rèn)當(dāng)成0來處理
12.4 比較類,截取類,substring應(yīng)用實例
  1. subString()------默認(rèn)從0開始截取全部,可以檢測兩個數(shù),小的自動放前邊,如果有一個參數(shù)為負(fù)數(shù) 默認(rèn)從0開始
    兩個特點:兩個參數(shù)會自動交換位置,所有的負(fù)數(shù)當(dāng)0處理
    總而言之,就記著str.subString(x,y)---從x開始截取到y(tǒng)結(jié)束 x<y
  2. str.slice(x,y)---從x開始到y(tǒng)結(jié)束 可以支持負(fù)數(shù)
12.5 大小寫轉(zhuǎn)換,split分割字符串
  1. str.toUpperCase();------轉(zhuǎn)化為大寫
  2. str.toLowerCase();------轉(zhuǎn)化為小寫
  3. str.split('x'); 字符串分割成一個數(shù)組
12.6 split彩色文字效果實例
<head>
    <meta charset="UTF-8">
    <title>Title</title>
    <style>
        div{width:300px;height:300px;border:1px solid red;padding:5px;}
        span{padding:5px 15px;display:inline-block;margin:5px 0;}
    </style>
</head>
<body>
<div id="div"></div>
<input type="text">
<input type="button" value="按鈕">
<script>
    var  oDiv=document.getElementById("div");
    var aInp=document.getElementsByTagName("input");
    aInp[1].onclick=function(){
        var str=aInp[0].value;
        var arr=str.split("");
        var color=["#f2a0a1","#c1e4e9","#5b7e91","#eaf4fc"];
        for(var i=0;i<arr.length;i++){
            arr[i]="<span style='background:"+color[i%color.length]+"'>"+arr[i]+"</span>";
        }
       oDiv.innerHTML=arr.join("");

    }
</script>
</body>
12.7 高亮顯示關(guān)鍵字實例,替換搜索關(guān)鍵字實例
<head>
    <meta charset="UTF-8">
    <title>Title</title>
    <style>
        div{border:10px solid #ddd;width:360px;height:200px;background:#ebf6f7;font-size:14px;padding:6px;margin: 5px 0;}
        span{background:#ff4;}
    </style>
</head>
<body>
<input type="text">
<input type="text">
<input type="button" value="替換">

<div id="div">
    老王送孫子上學(xué),路上看到一幫人對著一名環(huán)衛(wèi)工又拍又照的〉踩颍回頭對孫子說:看到?jīng)]蛛砰,不好好學(xué)習(xí)將來和他一樣掃馬路呼畸。 老王送孫子上學(xué)务唐,路上看到一幫人對著一名環(huán)衛(wèi)工又拍又照的≤钋。回頭對孫子說:看到?jīng)]竖配,不好好學(xué)習(xí)將來和他一樣掃馬路何址。 老王送孫子上學(xué),路上看到一幫人對著一名環(huán)衛(wèi)工又拍又照的进胯∮米Γ回頭對孫子說:看到?jīng)],不好好學(xué)習(xí)將來和他一樣掃馬路胁镐。 老王送孫子上學(xué)偎血,路上看到一幫人對著一名環(huán)衛(wèi)工又拍又照的诸衔。回頭對孫子說:看到?jīng)]颇玷,不好好學(xué)習(xí)將來和他一樣掃馬路笨农。 老王送孫子上學(xué),路上看到一幫人對著一名環(huán)衛(wèi)工又拍又照的帖渠≮艘啵回頭對孫子說:看到?jīng)],不好好學(xué)習(xí)將來和他一樣掃馬路阿弃。
</div>
<script>
    window.onload=function(){
        var div=document.getElementById("div");
        var text=div.innerHTML;
        var input=document.getElementsByTagName("input");
        input[2].onclick=function(){
            var str=input[0].value;
            var newStr=input[1].value;
            if(!str) return;
            div.innerHTML=text.split(str).join('<span>'+newStr+'</span>');
        }

    }
</script>
12.8 字符串方法總結(jié),兩道有趣的課后練習(xí)

var str = '字符串方法總結(jié)字符串方法總結(jié)www.com';
str.charAt(1); // '字'
str.charCodeAt(1); // 21619
String.fromCharCode(22937, 21619); // '妙味'
str.indexOf('m', 4); // 9
str.lastIndexOf('o'); // 16
'1000' < '2' // true
'1000' > 2 // true
str.substring(0, 4); // '字符串方'
str.slice(-3); // 'com'
str.toUpperCase(); // '妙味課堂-WWW.COM'
str.toLowerCase(); // '妙味課堂-www.com'
str.split('.', 2); // [ '字符串方法總結(jié)字符串方法總結(jié)www','com']

十三.JSon,數(shù)組方法,隨機(jī)函數(shù),數(shù)組去重

13.1 json數(shù)據(jù)格式及json語法

var json={name:'leo',age:'32'}
json.name-----leo
var json={name:'leo',age:'32'}
var json={'name':'leo','age':'32'}---安全系數(shù)高

13.2 for in遍歷json語法

for( var attr in json){
console.log(json[attr])
}

13.3 數(shù)據(jù)定義及清空數(shù)據(jù)效率問題

arr.length="";

13.4 數(shù)組4個小寶貝方法與技巧

arr.push("abc")
arr.unshift("abc") ---IE6 7不支持
arr.pop("abc") -----如果不寫任何參數(shù) 默認(rèn)為1
arr.shift("abc") -----如果不寫任何參數(shù) 默認(rèn)為1

一種排隊的方法
var arr=["小喬","大喬","武則天","諸葛亮","阿珂"];
arr.unshift(arr.pop())
13.5 splice方法,數(shù)組去重

//刪除 替換 添加
arr.splice()
第一個參數(shù): 從幾開始
第二個參數(shù): 刪除幾個
之后的參數(shù): 用于替換或添加內(nèi)容 取決于第二個參數(shù) 如果為0 則是添加 否則為替換

13.6 sort排序

arr.sort() ---字符串的比較
arr.sort(function(a,b){return a-b}) ----從小到大
arr.sort(function(a,b){return b-a}) ----從大到小
排序擴(kuò)展實例:

var arrWidth=["345px","58px","90px","1000px"]
arrWidth.sort(function(a,b){
    return parseInt(a)-parseInt(b);
})
console.log(arrWidth)//["58px", "90px", "345px", "1000px"]
隨機(jī)排序
arr.sort(function(a,b){
    return Math.random()-0.5;
})
13.7 隨機(jī)數(shù)及隨機(jī)公式推理過程

Math.round(Math.random()*(max-min)+min)

13.8 concat,reverse,面試題及練習(xí)

arr.concat()
arr.reverse()

數(shù)組去重splice()方法

var arr=[2,5,6,8,5,3,9,7,5,2,6];
    for(var i=0;i<arr.length;i++){
        for(var n=i+1;n<arr.length;n++){
            if(arr[i]===arr[n]){
                arr.splice(n,1);
            }
        }
    }

隨機(jī)產(chǎn)生100個從0-1000之間不重復(fù)的整數(shù)

var n=100;
    for(var i=0,str=[];i<n;i++){
        str.push(Math.round(Math.random()*n));
        if(str.length>1){
            for(var a=0;a<str.length;a++){
                for( b=a+1;b<str.length-1;b++){
                    if(str[a]===str[b]){
                        str.splice(b,1);
                        n++;
                    }
                }
            }
        }
    }
    str=str.join(" | ");
    document.body.innerHTML=str;

為數(shù)組編寫indexOf();方法

var arr=[6,9,3,8,7,4,5];
indexOf(arr,5);
function indexOf(arr,elem){
  for(var i=0;i<arr.length;i++){
      if(arr[i]===elem){
        return i;  
      }
    }
   return -1;
}

冒泡排序

 var arr=[5,26,3,59,18,22,66,37,42,26];
  for(var n=1;n<arr.length;n++){
       for(var i=0;i<arr.length-n;i++){
            if(arr[i]>arr[i+1]){
                arr[i]+=arr[i+1];
                arr[i+1]=arr[i]-arr[i+1];
                arr[i]-=arr[i+1]
            }
       }
    }
    console.log(arr)

找最大

    var arr=[5,26,3,59,18,22,66,37,42,26];
    var max=arr[0];
    for(var i=0;i<arr.length-1;i++){
        if(max<arr[i+1]){
            max=arr[i+1]
        }
    }
    console.log(max)

去掉數(shù)組中重復(fù)的元素(哈希去重),并統(tǒng)計原數(shù)組中每個值出現(xiàn)的次數(shù),輸出出現(xiàn)次數(shù)最多的那個字符和次數(shù)

 var arr=[5,26,3,59,18,22,66,37,42,26,3,18,5,5];
    var hash={};
    for(var i=0;i<arr.length;i++){
        if(hash[arr[i]]!==undefined){
             hash[arr[i]]++;
        }else{
             hash[arr[i]]=1;
        }
    }
    console.log(hash);//{3: 2, 5: 3, 18: 2, 22: 1, 26: 2, 37: 1, 42: 1, 59: 1, 66: 1}
    arr=[];
    var max=maxKey=0;
    for(var key in hash){
        arr[arr.length]=(key-=0);
        if(hash[key]>max){
           max=hash[key]
        }
        if(max===hash[key]){
            maxKey=key;
        }
    }
    console.log("輸出次數(shù)最多的數(shù)字是:"+maxKey+" 次數(shù)為: "+max);//輸出次數(shù)最多的數(shù)字是:5 次數(shù)為: 3
    console.log(arr);//去重后 :[3, 5, 18, 22, 26, 37, 42, 59, 66]

統(tǒng)計字符串中每個字符出現(xiàn)的次數(shù),并輸出出現(xiàn)次數(shù)最多的那個字符

    var str="zheshiyigetebiemeidedifang";
    var hash={};
    for(var i=0;i<str.length;i++){
        if(hash[str[i]]===undefined){
            hash[str[i]]=1;
        }else{
            hash[str[i]]++;
        }
    }
    var max=maxKey=0;
    for(var key in hash){
        if(hash[key]>max){
            max=hash[key];
        }
        if(max===hash[key]){
            maxKey=key;
        }
    }
    console.log(hash)
    console.log(max)
    console.log(maxKey)
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末诊霹,一起剝皮案震驚了整個濱河市羞延,隨后出現(xiàn)的幾起案子渣淳,更是在濱河造成了極大的恐慌,老刑警劉巖伴箩,帶你破解...
    沈念sama閱讀 212,080評論 6 493
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件入愧,死亡現(xiàn)場離奇詭異,居然都是意外死亡嗤谚,警方通過查閱死者的電腦和手機(jī)棺蛛,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,422評論 3 385
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來巩步,“玉大人旁赊,你說我怎么就攤上這事∫我埃” “怎么了终畅?”我有些...
    開封第一講書人閱讀 157,630評論 0 348
  • 文/不壞的土叔 我叫張陵,是天一觀的道長竟闪。 經(jīng)常有香客問我离福,道長,這世上最難降的妖魔是什么炼蛤? 我笑而不...
    開封第一講書人閱讀 56,554評論 1 284
  • 正文 為了忘掉前任妖爷,我火速辦了婚禮,結(jié)果婚禮上理朋,老公的妹妹穿的比我還像新娘絮识。我一直安慰自己,他們只是感情好嗽上,可當(dāng)我...
    茶點故事閱讀 65,662評論 6 386
  • 文/花漫 我一把揭開白布次舌。 她就那樣靜靜地躺著,像睡著了一般炸裆。 火紅的嫁衣襯著肌膚如雪垃它。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 49,856評論 1 290
  • 那天,我揣著相機(jī)與錄音国拇,去河邊找鬼洛史。 笑死,一個胖子當(dāng)著我的面吹牛酱吝,可吹牛的內(nèi)容都是我干的也殖。 我是一名探鬼主播,決...
    沈念sama閱讀 39,014評論 3 408
  • 文/蒼蘭香墨 我猛地睜開眼务热,長吁一口氣:“原來是場噩夢啊……” “哼忆嗜!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起崎岂,我...
    開封第一講書人閱讀 37,752評論 0 268
  • 序言:老撾萬榮一對情侶失蹤捆毫,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后冲甘,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體绩卤,經(jīng)...
    沈念sama閱讀 44,212評論 1 303
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 36,541評論 2 327
  • 正文 我和宋清朗相戀三年江醇,在試婚紗的時候發(fā)現(xiàn)自己被綠了濒憋。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 38,687評論 1 341
  • 序言:一個原本活蹦亂跳的男人離奇死亡陶夜,死狀恐怖凛驮,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情条辟,我是刑警寧澤黔夭,帶...
    沈念sama閱讀 34,347評論 4 331
  • 正文 年R本政府宣布,位于F島的核電站捂贿,受9級特大地震影響纠修,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜厂僧,卻給世界環(huán)境...
    茶點故事閱讀 39,973評論 3 315
  • 文/蒙蒙 一扣草、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧颜屠,春花似錦辰妙、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,777評論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至粗井,卻和暖如春尔破,著一層夾襖步出監(jiān)牢的瞬間街图,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 32,006評論 1 266
  • 我被黑心中介騙來泰國打工懒构, 沒想到剛下飛機(jī)就差點兒被人妖公主榨干…… 1. 我叫王不留餐济,地道東北人。 一個月前我還...
    沈念sama閱讀 46,406評論 2 360
  • 正文 我出身青樓胆剧,卻偏偏與公主長得像絮姆,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子秩霍,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 43,576評論 2 349

推薦閱讀更多精彩內(nèi)容