1、數組:正則表達式
一、數組的基本慨念:
數組是在內存空間中連續存儲的一組有序數據的集合
元素在數組中的順序,成爲下標。可使用下標訪問數組的每一個元素
二、如何聲明一個數組
① 使用字面量聲明:
在JS中,同一數組,能夠存儲各類數據類型
例如:var reg = [1,"換個影子",true,{},null,func]; //調用數組中的函數:reg[5]();
② 使用new關鍵字聲明: var reg = new Array(參數);
參數能夠是:
a、參數省略:表示建立一個空數組;
b、參數爲一個整數:聲明一個length爲指定長度的數組。可是,這個length能夠隨時可變可追加
算法
var reg = new Array(5); reg[6]=1;
c、參數爲逗號分隔的多個數值:表示數組的多個值
new Array(1,2,3,4) == [1,2,3,4];
三、數組中元素的讀寫和增刪
① 讀寫:經過下標訪問元素,下標從0開始 reg[1]="haha"
② 增刪:
a、使用delete關鍵字,刪除數組的某一個值,刪除以後,數組的長度不變,對應位置元素變爲undefined。eg :delete reg[1];
b、reg.pop():刪除數組的最後一個值,長度-1。至關於reg.length -= 1;
c、reg.shift():刪除數組的第一個值。長度-1.
d、reg.unshift(新值):在數組的第0個位置新增一個值;長度+1.
e、reg.push(新值):在數組的最後一個位置新增一個值;長度+1.
f、直接訪問數組沒達到的下標,能夠動態追加
reg[100] = 1;中間若是有空餘下標,將存入undefined;
四、數組中的其餘方法:
① join():【原數組不會被改變】將數組用指定分隔符鏈接爲字符串,並返回。當參數爲空時,默認用逗號分隔; var str = arr.join("-");
② concat():【原數組不會被改變】 將數組與多個數組的值鏈接爲新數組,並返回 var arr2= arr.concat(arr1,arr1)
concat()鏈接時,若是有二維數組,則至多能拆一層[]
[1,2]. concat([3,4],[5,6]) -> [1,2,3,4,5,6]
[1,2]. concat([3,4,[5,6]]) -> [1,2,3,4,[5,6]]
③ push():數組最後增長一個,unshift() 數組開頭增長一個。返回新數組的長度; 原長度+1
pop():刪除數組最後一個, shift()刪除數組開頭一個。 返回被刪除的值 原長度-1
ps:上述方法均會改變原數組
④ reverse():【原數組被改變】 將數組反轉倒序輸出 arr.reverse();
⑤ slice(begin,end):【原數組不會被改變】截取數組中的某一部分,並返回截取的新數組
》》傳入一個參數,表示開始區間,默認截到數組最後
》》傳入兩個參數:表示開始和結束的下標,左閉右開區間
》》兩個參數能夠爲負數,表示從右邊開始數,最後一個值爲-1;
⑥ sort():【原數組被改變】 將數組進行升序排列:
》》默認狀況下,會按照每一個元素首字母的ASCII值進行排序
[1,3,2].sort() -> [1,2,3]
》》傳入一個比較函數,手動指定排序的函數算法
函數將默認接收兩個值a、b,若是返回值>0,則證實a>b;
數組
arr.sort(function(a,b){ return a-b; //升序排列 // return b-a; //降序排列 });
⑦ indexOf(value,index):返回數組中第一個value值所在的下標,若是沒有找到返回-1;
lastIndexOf(value,index):返回數組中最後一個value值所在的下標,若是沒有找到返回-1;
》》若是沒有指定index,則表示全數組查找value;
》》若是指定了index,則表示從index開始。向後查找value;
⑧ forEach():專門用於循環遍歷數組,接收一個回調函數,回調函數接收兩個參數,第一個參數爲數組的值,第二個參數爲下標
【IE8以前不支持此函數】
函數
arr.forEach(function(item,index){ console.log(item); //單獨打印數組的每一個值 })
⑨ map():數組映射。使用方法與forEach()相同。不一樣的是,map能夠有返回值,表示原數組的每一個值進行操做後,返回一個新數組
【IE8以前不支持此函數】
this
var arr1 = arr.map(function(item,index){ console.log(item); //單獨打印數組的每一個值 return item+2; //返回的新數組的值爲原數組的值加2 })
五、二維數組與稀疏數組(瞭解)
① 二維數組:數組中的值,依然是一個數組形式。
eg:var arr = [[1,2],[3,4],[5,6]];//至關於兩行三列
讀取二維數組:arr[行號][列號];
② 稀疏數組:數組中的索引是不連續的。(length要比數組中實際的元素個數大)spa
2、內置對像code
一、Boolean 類
也有兩種聲明方式: 可使用字面量方式聲明一個單純的變量;用typeof檢測爲Boolean類型
也可使用new Boolean()聲明一個boolnean類型的對象。用typeof檢測爲Object類型對象
var bool = true; var bool1 = new Boolean(true);
二、Number類
Number.MAX_VALUE:返回NUmber類可表示的最大值
Number.MIN_VALUE:返回NUmber類可表示的最小值
☆ num1.toString():將數值類型(num1)轉換爲字符串類型
num1.toLocaleString():將數值按照本地格式順序轉換爲字符串,通常從右開始,三個一組加逗號分隔
☆ num1.toFixed(n):將數字保留n爲小數,並轉爲字符串格式
num1.toPrecision(n):將數字格式化爲指定長度,
n表示不含小數點的位數長度,若是n小於原數字長度,則用科學計數法表示,若是n大於原數字長度,則小數點後補零;
num2.valueOf():返回Number對象(num2)的基本數字值;blog
三、 string類
一、 屬性:.length: 返回字符串的長度,即字符數;
字符串支持相似數組的下標訪問方式:str[0];
二、.toLowerCase(): 將字符串全部字符轉成小寫
.toUpperCase():將字符串全部字符轉成大寫
三、.charAt(n):截取數組的第n個字符至關於str[n];
四、.substring(begin,end):從字符串中截取子串
》》只傳入一個參數:從begin到最後
》》傳入兩個參數:從begin到end的區間,左閉右開;
五、.indexOf("str",index):查找子串在字符串中出現的位置,若是沒有找到,返回-1,其餘同數組的indexof方法;
.lastIndexOf("i",4):同數組;
六、.split("分隔符"):將字符串用已指定分隔符分隔,存入數組中,傳入空""表示字符串的每一個字符分開放入數組
七、.replace("old","new"):將字符串的第一個old替換爲new。 返回新字符串 原字符串不變
》》第一個參數能夠是,普通字符串,也能夠是正則表達式
》》若是是普通字符串,則只替換第一個old,若是是正則表達式,則能夠根據正則的寫法要求,進行替換排序
四、Date時期類
一、 new Date():返回當前最新時間
new Date("2017,8,23,12:34:56");返回指定的時間
二、經常使用方法:(當前時間)
.getFullYear():獲取4位年份
.getMonth():獲取月份0-11
.getDate():獲取一個月中的第幾天 1-31
.getDay():獲取一週的第幾天 0-6 0:表示周天
.getHours():獲取小時
.getMinutes():獲取分鐘
.getSeconds():獲取秒
3、自定義對象
一、基本慨念:
① 對象:對象是擁有一系列無序屬性和方法的集合;
② 鍵值對:對象中的數據,是以鍵值對的方式存在。對象的每一個屬性和方法,都對應一個鍵名,以鍵取值;
③ 屬性:描述對象特徵的一系列變量,稱爲屬性。【對象中的變量】
④ 方法:描述對象行爲的一系列的函數,稱爲方法。【對象中的函數】
二、對象的聲明:
① 使用字面量聲明:var obj = {
key1 : value1,
key2 : value2,
func1 : function(){}
}
>>對象中的數據是以鍵值對的形式存儲,鍵與值之間用:分隔,鍵值對之間用,分隔。
>>對象中的鍵能夠是除了數組、對象之外的任何數據類型。可是,通常咱們只用普通變量名做爲鍵
>>對象中的值能夠是任何數據類型,包括數組和對象。
② 使用new關鍵字聲明:var obj = Object(); //聲明一個空的對象
Object.key1 = value1; //給對象添加鍵值對
Object.key2 = value2;
Object.func1 = function(){};
三、對象中屬性和方法的讀寫: ① .運算符: 對象外部: 對象名.屬性 對象名.方法 對象內部: 對象名.屬性 ,或this.屬性 ② 經過["key"]調用: 對象名["屬性名"] 對象名["方法名"](); >>若是鍵中包含特殊符號,則只能用第②中方式; >>對象中直接寫變量名,默認爲調用全局變量。 若是須要調用對象自身的屬性或方法。須要使用對象名.屬性或this.屬性。 rson.age this.age 均可以,但推薦使用this關鍵字。 ③ 刪除對象的屬性和方法:delete 對象名.屬性名/方法名 delete person.age;