javascript常用對象

數組的應用

a.順序查找

var a = [3,7,11,57,94,34,47,35,23,12];

    var num = Number(prompt("請輸入要查找的值"));

    var index = -1;//最初認爲要找的數不在數組中

    for(var i in a){

        if(a[i] == num){

            index = i;

            break;

        }

    }

    alert(index);

這種查找方法最簡單,但是查找次數與數據量成正比,效率不高。

b.折半查找(二分查找)

假設在一個已經有序的數組中,可以利用折半查找大幅提高效率。

<script>

    /*

    * 思路:

    * (1)用start表示查找範圍的起點,end表示終點

    * (2)只要start<=end就重複步驟(3)

    * (3)和中間(mid)的那個數進行比較

    * a.相等:找到了,結束

    * b.大於:在前半段找,即end=mid-1

    * c.小於:在後半段找,即start=mid+1

    * (4)輸出查找結果

    * log2n

    * */

    var a = [3,7,11,12,23,34,35,47,57,94];

    var num = Number(prompt("請輸入要查找的值"));

    var index = -1;//最初認爲要找的數不在數組中

 

    var start = 0;

    var end = a.length-1;

 

    while(start<=end){

        var mid = Math.ceil((start+end)/2);

        if(num == a[mid]){

            index = mid;

            break;

        }else{

            if(num > a[mid]){

                //在後半段找

                start = mid+1;

            }else{

                //在前半段找

                end = mid-1;

            }

        }

    }

    alert(index);

</script>

折半查找的最壞查找次數和數據量的關係是對數關係,所以說它的查找效率很高,但是任何事情往往都有兩面性,它的高效率也是有代價的,也就是要求有序。

(2)排序(冒泡排序)

<script>

    var a = [3,7,11,43,87,5,99,22,51,8];

    for(var i=0; i<a.length-1; i++){

        for (var j=0; j<a.length-1-i; j++) {

            var temp;

            if (a[j] > a[j + 1]) {

                temp = a[j];

                a[j] = a[j + 1];

                a[j + 1] = temp;

            }

        }

    }

    alert(a);

</script>

冒泡排序的代價也是比較大的,很多時候做的是無用功,選擇排序進行了優化。

選擇排序

(3)隊列

先進先出(FIFO),在頭部出隊(shift()),在尾部入隊(push())

var a = [];

    a.push(1);

    document.write(a.toString()+"<br>");

    a.push(2);

    document.write(a.toString()+"<br>");

    a.push(3);

    document.write(a.toString()+"<br>");

    a.shift();

document.write(a.toString()+"<br>");

a.shift();

    document.write(a.toString()+"<br>");

a.shift();

    document.write(a.toString()+"<br>");

(4)堆棧

先進後出(FILO),在尾部進棧(push()),在尾部出棧(pop())

var a = [];

    a.push(1);

    document.write(a.toString()+"<br>");

    a.push(2);

    document.write(a.toString()+"<br>");

    a.push(3);

    document.write(a.toString()+"<br>");

    a.pop();

    document.write(a.toString()+"<br>");

    a.pop();

    document.write(a.toString()+"<br>");

    a.pop();

document.write(a.toString()+"<br>"); 

常用對象

2.1字符串

字符串的定義:定義一個變量,然後直接將字符串賦值給它。

var str = “abc123”;

字符串實際上是字符組成的數組,所以數組的方法它基本上都有。

(1)訪問字符串裏面的字符:

a.和數組的方式一樣(str[i])

b.字符串特有的方式charAt(i)

(2)查找

a.數組方式:indexOf

b.字符串方式:search方法:傳入參數(要搜索的子串),返回子串的第一個字符在父串的下標。這個方法對大小寫敏感。

search()方法的功能比indexOf更強大,它可以使用正則表達式形式來查找

(3)取子串

a.數組方式:slice():傳入參數開始下標和結束下標,並返回子串

b.字符串特有的方法:

substr(start,length):傳入參數開始下標和截取長度,取子串,如果沒有第二個參數,會截取到最後。

substring(start,end):傳入兩個參數,第一個參數,開始截取的下標,第二個是截取結束的下標。

(4)替換

a.數組方式:splice()

b.字符串方式:replace():替換字符串中的子串,有兩個參數,第一個是要被替換的子串,第二個參數是替換的新的子串。

toUpperCase():小寫字母轉換爲大寫字母

var str = prompt("請輸入一個英文字符串");//abc

Str = str.toUpperCase();

alert(str);//ABC

toLowerCase():大寫字母轉換爲小寫字母

charCodeAt():獲取字符串某一個位置字符的Unicode編碼

fromCharCode():將某個Unicode字符編碼轉換爲對應的字符

<script>

    var str = prompt("請輸入一個英文字符串");

    var result = "";

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

        var char = str.charAt(i);

        var code = char.charCodeAt();//轉成ASCII

        alert(char);

        if(code>=97 && code<=122){

            code = code - 32;

            char = String.fromCharCode(code);

        }

 

        result += char;

    }

    alert(result);

</script>

trim():去除字符串兩邊的空格符

var str = "               請輸入一個英文字符串              ";
str = str.trim();
alert(str);

split(x):字符串的分割。用字符串“x”進行分割。分割之後是一個數組

數組有一個toString方法,將數組轉換成字符串,元素之間用逗號隔開

var a = "a b c";
var result = a.split(" ");
alert(result);//["a","b","c"]

2.2日期

定義:

var d = new Date();

var d = new Date(2017,3,22,8,30,22;

不給參數,定義的日期爲執行這條指令時那一刻的系統的時間,當然也可以指定年月日時分秒參數,但是要特別注意的是從0開始,即0表示1月

修改日期分量:

setYear()、setMonth()、setDate()……

獲取日期分量:

getYear()、getMonth()

getMilliseconds()是獲取毫秒分量

getTime()獲取的是1970-1-1 00:00:00至指定日期所經歷的毫秒數

 

日期轉換成字符串

var d = new Date(2017,3,22,8,30,22);

document.write(d.toString()+"<br>");

document.write(d.toDateString()+"<br>");

document.write(d.toLocaleDateString()+"<br>");

document.write(d.toLocaleTimeString()+"<br>");

document.write(d.toTimeString()+"<br>");

document.write(d.toUTCString()+"<br>");

日期運算

d1>d2

d1-d2:兩個日期相隔的毫秒數

 

便捷計算某月天數的方法

var month = 2;

var d = new Date(2017,month,0);

document.write(d.getDate()+"<br>");

2.3其它對象

Math對象

Math.max(n1,n2……):取得一組數據中的最大值

Math.min(n1,n2……):取得一組數據中的最小值

Math.PI:圓周率,π的值

Math.E:算術常量e,自然對數的底數

Math.pow(x,y):計算x的y次方

Math.sqrt(x):返回數的平方根

Math.abs(x):返回x的絕對值

Math.floor(x):對x向下取整

Math.ceil(x):x向上取整

Math.round(x):x四捨五入

Math.random():獲取一個0~1的隨機數

Number對象

toExponential():科學計數法表示,指數計數法,

var e = 10000;

    var n = e.toExponential();

    alert(n);//1e+4,string

toFixed(x):保留x位小數,並把數字轉換爲字符串,四捨五入

var e = 1.123;

e = e.toFixed(2);

alert(e);//1.12

toPrecision(x):將數字保留x位,並且返回的是string類型

var a = 1.23243;

var b = a.toPrecision(4);

alert(b);//1.232

發佈了35 篇原創文章 · 獲贊 6 · 訪問量 1萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章