1. 程式人生 > >js數組、內置對象、自定義對象

js數組、內置對象、自定義對象

表達式 uppercase 元素 mon 下標 fix 無序 locale 變化

【js中的數組】
1、數組的基本概念?
數組是在內存空間中連續存儲的一組有序數據的集合
元素在數組中的順序,稱為下標。可以使用下表訪問數字的每個元素。

2、如何聲明一個數組?
① 使用字面量聲明:
在js中,同一數組可以存儲各種數據類型。
例如:var arr=[1,"撒",true,4,func,{},null];
② 使用new關鍵字聲明:var arr=new Array(參數);
>>>參數可以是:
a.參數省略,表示創建一個空數組;
b.參數為一個整數,表示聲明一個length為指定長度的數組。但是這個length隨時可變可追加;


c.參數為逗號分隔的多個數值。表示數組的多個值;
new array(1,2,3)==[1,2,3]
3.數組中元素的讀寫/增刪?
① 讀寫:通過下表訪問元素。 下標從0開始 arr[1]="haha";
② 增刪:

刪: a.使用delete關鍵字,刪除數組的某一個值。刪除之後,數組的長度不變,對應得位置變為Undefined。
eg:delete arr[1]。
b.arr.pop():刪除數組的最後一個值。相當於 arr.length-=1。

c.arr.shift():刪除數組的第一個值。


增: d.arr.unshift(值):在數組的第0個位置增加一個值。
e.arr.push(值):在數組的最後一個位置新增一個值;
f.直接訪問數組沒有達到的下標,可以動態追加。
arr[100]=1;中間如果有空余下標,將存入Undefined。

4、數組中的其他方法(非常非常常用!!!!面試題特愛考!!!尤其是sort)

①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]]
③push():在數組最後增加一個,unshift():數組開頭增加一個。 -->返回新數組的長度;
pop():在數組最後刪除一個,shift():數組開頭刪除一個。 -->返回被刪除的值;
[上述方法,均會改變原數組]

④reverse():[原數組被改變]將數組翻轉,倒敘輸出。
eg: var arr = [1,2,3,4,5,6,7,8];
arr.reverse();
console.log(arr);
⑤slice(begin,end):[原數組不會被改變]截取數組中的某一部分,並返回截取的新數組。

>>>傳入一個參數,表示開始區間,默認將截到數組最後;
>>>傳入兩個參數,表示開始和結束的下標,左閉右開區間(包含begin,不包含end);
>>>兩個參數可以為負數,表示從右邊開始數,最後一個值為-1;
⑥sort():[原數組被改變]將數組進行升序排列;
>>>默認情況下,會按照每個元素首字母的ASCII值進行排序;
eg:[1,5,13,12,7,6,4,8].sort() -->[1,12,13,4,5,6,7,8];
>>>可以傳入一個比較函數,手動指定排序的函數算法;
函數將默認接收兩個值a,b,如果函數返回值>0,則證明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之前,不支持此函數!!!!!)
var arr = [1,5,6,3,4,2,7,6,4,8];
arr.forEach(function(item,index){
console.log(item);
})
⑨map():數組映射,使用方式與forEach()相同。不同的是,map可以有return返回值,表示將原數組的每個值進行操作後,返回給一個新數組。
(IE8之前,不支持此函數!!!!!)
var arr1 = arr.map(function(item,index){
console.log(item);
return item+2;
});
console.log(arr1);

5、二維數組與稀疏數組(了解)
①二維數組:數組中的值,依然是一個數組形式。
eg:arr=[[1,2,3],[4,5,6]]; //相當於兩行三列
讀取二維數組:arr[行號][列號];
②稀疏數組:數組中的索引是不連續的。(length要比數組中實際的元素個數大)

6、基本數據類型和引用數據類型:
①基本數據類型:賦值時,是將原變量中的值,賦值給另一個變量,復制完成後,兩個變量相互獨立,修改其中一個的值,另一個不會變化。
②引用數據類型:賦值時,是將原變量在內存中的地址,賦值給另一個變量。賦值完成後,兩個變量中存儲的是同一個內存地址,訪問的是同一份數據,
其中一個改變另一個也會發生變化。
③ 數值型、字符串、布爾型等變量屬於基本數據類型;
數組,對象屬於引用數據類型;

內置對象

Boolean類
有兩種聲明方式:
可以使用字面量方式聲明一個單純的變量:用typeof檢測為Boolean類型
也可以使用new Boolean()聲明一個Boolean類型的對象。用typeof檢測為Object類型。

Number.MAX_VALUE 返回Number類可表示的最大值
Number.MIN_VALUE 返回Number類可表示的最小值

.toString();將數值類型轉換為字符串類型
eg:var str = num1.toString();
.toLocaleString();將數值按照本地格式順序轉換為字符串,一般從右開始,三個一組加逗號分隔;

String 類
1、 屬性:str.length 返回字符串的長度,字符數
字符串支持類似數組的下標訪問:str[0];
2、方法:
.toLowerCase();將字符串所有字符轉成小寫
.toUpperCase();將字符串所有字符轉成大寫
.charAt(n);截取數組的第n個字符,相當有str[n]
.indexOf("str",index);從index位置開始,查找子串在字符串的位置 ,如果沒有找到返回-1,其他從數組的indexOf方法;
.lastIndexOf();同數組
.substring(bengin,end);從字符串中截取子串
只傳入一個參數,表示從begin開始到最後;
傳入兩個參數,表示begin到end的區間,左閉右開
.split("分隔符");將字符串以指定分隔符分隔,存入數組中,傳入空""表示將字符串的每一個字符分開放入數組;
.replace("old","new");將字符串中的第一個old替換為new。
第一個參數,可以是普通字符串,也可以是正則表達式;
如果是普通的字符串,則只替換第一個old,如果是正則表達式,則可以根據表達式的寫法要求,進行替換。

date 日期類
1、new Date():返回當前最新時間
new Date("2017,8,31,12:34:56");返回指定時間
2、常用方法:
.getFullYear():獲取4位年份
.getMonth():獲取月份 0-11
.getDate():獲取一個月中的第幾天 1-31
.getDay():獲取一周中的第幾天 0-6,0表示周天
.getHours():獲取小時
.getMinutes():獲取分鐘
.getSeconds():獲取秒


eg:var str = num1.toLocaleString();
.toFixed(n);將數字保留n為小數,並轉為字符串格式
eg:var str = num1.toFixed(2);
.toPrecision(n);將數字格式化為指定長度,n表示不含小數點位數長度,如果n<原數字長度,則用科學計數法表示。如果n>原數字長度,則小數點後補0;
eg:var str = num1.toPrecision(2);
.valueOf();返回Number對象的基本數字值;

【自定義對象】
1.基本概念
① 對象:對象是擁有一系列無序屬性和方法的集合。
② 鍵值對:對象中的數據是以鍵值對的方式存在。對象的每個屬性和方法,都對應值一個鍵名,以鍵取值。
③ 屬性:描述對象特征的一系列變量,稱為屬性。【對象中的變量】
④ 方法:描述對象行為的一系列函數,稱為方法。【對象中的函數】

2.對象的聲明
① 字面量聲明:var obj={
key1:value1,
key2:value2,
func1:function(){}
}
>>>對象中的數據是以鍵值對形式存儲,鍵與值之間用:分隔。
對各鍵值對之間用,分隔。
>>>對象中的鍵,可以是除了數組/對象以外的任何數據類型。但是,一般只用普通變量名作為鍵。
>>>對象中的值,可以是任何數據類型,包括數組和對象。
② 使用new關鍵字聲明:var obj=new Object();
var.key1=value1;
obj.func=function(){}

3.對象中屬性和方法的讀寫:

① .運算符:對象名.屬性 對象名.方法();
對象內部:this.屬性 this.方法()
對象外部:對象名.屬性 對象名.方法()
② 通過["key"]調用:對象名.["屬性名"] 對象名.["方法名"]();
>>>如果鍵中包含特殊字符,只能使用第②種方式;
>>>對象中直接寫變量名,默認為調用全局變量。如果需要調用對象自身的屬性或者方法。
需要使用對象名.屬性,或者this.屬性。
person.age this.age 都可以,但推薦使用this關鍵字。
③ 刪除對象的屬性和方法:delete 對象名.屬性名/方法名
delete person.age;

js數組、內置對象、自定義對象