三、數組中,元素的讀寫/增刪?
① 讀寫:經過下標訪問元素,下標從0 開始。eg. arr[1] = "haha";
② 增刪:
a. 使用delete關鍵字, 刪除數組中的某一個值,刪除後數組的長度不變,對應位置變爲undefined。 eg.delete arr[1]; // 刪除數組中的某一個值
b. arr.pop(); 刪除數組中的最後一個值。至關於 arr.length -= 1;
與delete的區別:數組長度-1
c. arr.shift(); 刪除數組中的第一個值。
d. arr.unshift(值); 在數組開頭(第0個位置)新增一個值。
e. arr.push(值); 在數組最後一個位置新增一個值。
f. 直接訪問數組沒達到的下標,能夠動態追加。
arr[100] = 1; 中間若是有空餘下標,將存入undefined。
四、數組中的其餘方法(函數)
① join("分隔符") :將數組用指定分隔符連接爲字符串,當參數爲空時,默認用,分隔。
② concat():原數組不會被改變。將數組與兩個或多個數組的值連接爲新數組‘
【注】 concat 鏈接時,若是有二維數組,至多拆一層;eg.
[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]]
③ arr.push(值) :數組最後增長一個;
arr.unshift(值): 數組開頭增長一個 —— 返回新數組的長度;
arr.pop():數組最後刪除一個;
arr.shift(): 數組開頭刪除一個 —— 返回被刪除的值;
【上述方法 都會改變原數組】
④ reverse():原數組被改變。將數組翻轉,倒序輸出。
⑤ arr.slice(begin,end):原數組不會被改變。截取數組中的某一部分,並返回截取的新數組。
傳入一個參數,表示開始區間,默認截取到數組最後;
傳入兩個參數,表示開始和結束的下標,左閉右開(包含begin, 不包含end)
兩個參數能夠爲負數,表示從右邊開始數,最後一個值爲-1
⑥ sort():原數組被改變 ,將數組進行升序排列。
1) 默認狀況下,會按照每一個元素首字母的ASCII碼值進行排序;
[3,1,5,12].sort(); -> [1,12,3,5]
2) 能夠傳入一個比較函數,手動指定排序的函數算法;
函數默認接收兩個值a,b 若是返回值>0,則證實a>b
arr.sort(function(a,b){
return b-a; //降序排列
return a-b; //升序排列
});
⑦ IndexOf(value,index):返回數組中第一個value值所在的下標,若是沒有找到返回-1;
lastIndexOf(value,index):一個value存在多個的狀況下,返回數組中最後一個value值所在的下標,若是沒有找到返回-1;
若是沒有指定 index,則表示在整個數組中查找 value
若是指定了index,則表示從index開始,向後查找value
⑧ forEach():專門用於循環遍歷數組。接收一個回調函數,回調函數能夠接收兩個參數,
第一個參數爲數組每一項的值,第二個參數爲數組的下標。【IE8以前不支持】
arr.forEach(function(item,index){
console.log(item);
});
⑨ map():數組映射。使用方式與forEach()相同。與forEach()不一樣的是,map能夠有return返回值,表示將原數組的每一個值進行操做,返回一個新數組
var arr0 = arr.map(function( item,index ){ //數組映射 返回一個新數組
console.log(item);
return item-1;
});
⑩ .splice(no-1,1);插入、刪除、替換(第三個參數)數組中的元素。
五、二維數組與稀疏數組(瞭解)
① 二維數組:數組中的值依然是一個數組形式 。
eg. arr var a = [[1,2,3],[3,4,5]]; //兩行三列
讀取二維數組:a[行號][列號]
② 稀疏數組:數組中的索引是不連續的。(length要比數組中實際的元素個數大)
基本數據類型&引用數據類型
① 基本數據類型:賦值時,是將元變量中的值,賦值給另外一個變量。賦值完成後,兩個變量相互獨立,修改其中一個值,另外一個不會變化。
② 引用數據類型:賦值時,是將原變量在內存中的地址,賦值給另外一個變量。賦值完成後,兩個變量中存儲的是同一個內存地址,訪問的是同一份數據,修改其中一個值,另外一個也會改變。
③ 數值型、字符串型、布爾型等變量屬於基本數據類型;
數組、對象屬於引用數據類型。
其餘內置對象
一、boolean 類
兩種聲明方式:可使用字面量方式聲明一個單純的變量;
也可使用 new Boolean() 聲明一個boolean類型的對象。用typeof檢測爲object類型。
二、number 類
經常使用方法:
MAX_VALUE:返回number類可表示的最大值;
MIN_VALUE:返回number類可表示的最小值;
.toString():將數值類型轉換爲字符串類型。(經常使用)
.toLocaleString():將數值按照本地格式順序轉換爲字符串,
通常從右開始,三個一組加逗號分隔
.toFixed(n):將數字保留n位小數,並轉化爲字符串格式。(經常使用)
.toPrecision():將數字格式化爲指定長度。n - 不含小數點的位數長度;若是n小於原數字長度,則用科學計數法表示。若是n大於原數字長度,則小數點後補0;
.valueOf():返回number對象的基本數字值。
三、string 類
1) 屬性:str.length 返回字符串的長度即字符數;
字符串支持相似於數組的下標訪問機制:str[0]
2) .toLocaleLowerCase();將字符串全部字符轉成小寫
.toLocaleUpperCase();將字符串全部字符轉成大寫
3) .charAt(n); 截取數組的第n個字符,至關於str[n] (經常使用)
4) .indexOf("str",index); 從index位置開始,查找字串在字符串中出現的位置,
若是沒有找到返回-1,其餘同數組的indexOf方法
.lastIndexOf("str",index); 同數組
5) .substring(begin,end); 從字符串中截取子串
只傳入一個參數:表示從begin開始到最後
傳入兩個參數,表示從begin到end的區間,左閉右開。
6) .split():將字符串以指定分隔符分隔。存入數組中。
傳入空"" 表示將字符串的每一個字符分開存入數組中。
7) .replace("old","new"); 將字符串的第一個old替換爲new。
第一個參數,能夠是 普通字符串,也能夠是 正則表達式。
若是是普通字符串,則只替換第一個old;若是是正則表達式,能夠根據正則的寫法要求,進行替換
三、date 日期類 對象
1) new Date() :返回當前最新時間。
new Date("2017,12,31,12:34:12"); 返回指定時間。
2) 經常使用方法:
① .getFullYear():獲取年份。
② .getMonth():獲取月份。
③ .getDate(); 獲取一個月中的第幾天
④ .getDay(); 獲取一個週中的第幾天 0-表示周天
自定義對象
一、基本概念
① 對象:擁有一系列無序屬性和方法的集合。
② 鍵值對:對象中的數據,用以鍵值對的形式存在。對象的每一個屬性和方法,都對應值的一個鍵名,以鍵取值。
③ 屬性:【對象中的變量】;描繪對象特徵的一系列變量;
④ 方法:【對象中的函數】;描述對象行爲的一系列函數。
二、對象的聲明
① 使用字面量聲明:
【注】 對象中的數據是以鍵值對形式存儲,鍵與值之間用:分隔。多個鍵值對之間用,分隔
對象中的鍵 能夠是除了數組/對象之外的其餘任何數據類型,可是咱們通常使用普通變量名
對象中的值 能夠是任何數據類型,包括數組和對象。
var obj = {
key1 : value1,
key2 : value2,
func1 : function(){}
}
② 使用new關鍵字聲明:
var obj = new Object();
obj.key1 : value1;
obj.key2: value2;
obj.func1 : function(){}
三、對象中屬性和方法的讀寫
① .運算符:
對象內部:this.屬性 this.方法();
對象外部:對象名.屬性 對象名.方法();
② ["key"]調用:對象名["屬性名"] 對象名["方法名"]();
【注】 若是鍵中包含特殊字符,則只能用第②種方式。
對象中 直接寫變量名,默認爲調用全局變量。若是須要調用對象自身的屬性或者方法,須要使用對象名.屬性,或者this.屬性。
this.age person.age 推薦使用this關鍵字。
四、刪除對象的屬性和方法
delete 對象名.屬性名/方法名;
eg. delete person.age;
謝謝閱讀,請多指教,共勉。