數(shù)組是引用類型的一種,什么是引用類型呢?
和原始類型不同,引用類型變量中存放的僅僅是引用對象的內(nèi)存地址。
所以,當(dāng)我們復(fù)制引用類型的時候,復(fù)制的僅僅是它的地址罷了。
也就是說,任意一個變量發(fā)生變化,地址上的對象也隨之變化。
舉個例子:
var a = [1,2,3];
var b = a;
b[0] = 'first';
console.log(b[0]); // 'first'
console.log(a[0]); // 'first'
檢查數(shù)組
value instanceof Array => true / false
Array.siArray(value) => true / false
轉(zhuǎn)換方法
toString() / join(sep) => 變成字符串,自定義分隔符(默認(rèn)逗號分隔)
valueOf() => 返回指定對象本身
棧方法
放砝碼,先進(jìn)后出
push() => 在數(shù)組末尾添加元素
pop() => 在數(shù)組末尾刪除元素
隊列方法
裝子彈,先進(jìn)先出
unshift() => 在數(shù)組開頭添加元素
shift() => 在數(shù)組開頭刪除元素
重排序方法
reverse() => 反轉(zhuǎn)
sort() => 升序(值逐漸升高)
注意:sort()比較的是字符串!sort()中可以傳入一個比較函數(shù)。
操作方法
基于原數(shù)組,在新的副本上操作(不影響原數(shù)組),只是返回新數(shù)組。
concat() => 數(shù)組元素拼接 在數(shù)組末尾添加元素,如果是數(shù)組那就將數(shù)組里的元素添加到末尾
slice() => 切片 顧頭不顧尾
splice(startIndex, deleteNum, newItem) => 有三個參數(shù),分別是開始位置、移除項數(shù)、被插入項??梢赃M(jìn)行三種操作:刪除、插入、替換。
位置方法
indexOf(value, [seekIndex]) => value的下標(biāo) 第一個參數(shù)表示要查找的元素,第二個參數(shù)表示查找的起始位置。
lastIndexOf(value) => value最后一次出現(xiàn)的下標(biāo)
注意:如果返回-1,表示數(shù)組中沒有該項。
迭代方法 (回調(diào)函數(shù)中第一個參數(shù)是數(shù)組項,第二個參數(shù)是下標(biāo),第三個參數(shù)是當(dāng)前數(shù)組。)
forEach(function(item,index,arr){...}) => 遍歷數(shù)組 相當(dāng)于原生的for循環(huán)
every(function(item,index,arr){...}) => 數(shù)組里面所有的元素都要符合條件,才返回true。
some(function(item,index,arr){...}) => 數(shù)組中任何一個元素符合條件,就返回true。
map(function(item,index,arr){...}) => 做數(shù)據(jù)交互映射,可以重新整理數(shù)據(jù)結(jié)構(gòu)。對每一項給定函數(shù)操作,返回新的數(shù)組。(常用?。?/strong>
filter(function(item,index,arr){...}) => 過濾數(shù)據(jù),把返回true的留下來。對每一項給定函數(shù)操作,返回符合條件的數(shù)組。
歸并方法(回調(diào)函數(shù)中第一個參數(shù)是前一個累積值,第二個是當(dāng)前值,第三個是下標(biāo),第四個是當(dāng)前數(shù)組。)
reduce(function(prev, cur, index, arr){...}) => 對給定數(shù)組按照從左到右的順序,執(zhí)行給定的操作,并返回結(jié)果。(求數(shù)組的和,求階乘)
reduceRight(function(prev, cur, index, arr){...}) => 對給定數(shù)組按照從右往左的順序,執(zhí)行給定的操作,并返回結(jié)果。
字符串作為基本數(shù)據(jù)類型,它是不可以改變原始值的,屬于不可變類型。(數(shù)組屬于可變類型)
那么,它為什么可以有屬性和方法呢?
因為它是包裝類,首先會通過new String()創(chuàng)建一個字符串對象,這樣就擁有了對象的屬性和方法。
當(dāng)屬性和方法調(diào)用完畢后,這個字符串對象就會銷毀。
字符方法
charAt(index) => 返回對應(yīng)下標(biāo)的字符
charCodeAt(index) => 返回對應(yīng)下標(biāo)的字符編號
轉(zhuǎn)換方法
String.split(sep) => 變成數(shù)組,自定義分隔符
操作方法
和數(shù)組的操作方法concat()、slice()、splice()類似。
String.concat() => 字符串拼接(和加號的作用相同,先把符號左右轉(zhuǎn)換成字符串然后相加)
String.slice() => 切片,顧頭不顧尾
String.substring() => 同slice() 注意:傳入負(fù)數(shù)直接轉(zhuǎn)換為0
String.substr(stratIndex, length) => 也是切片,不同的是第一個參數(shù)是開始下標(biāo)位置,第二個參數(shù)是操作的字符長度。
位置方法
indexOf() => 返回查找字符的下標(biāo)
lastIndexOf() => 最后出現(xiàn)的下標(biāo)
注意:沒有找到返回-1,第二個參數(shù)表示開始查找的下標(biāo)
trim() => 刪除前置和后綴的所有空格
大小寫轉(zhuǎn)換
toLowerCase() => 字符串全部小寫
toUpperCase() => 字符串全部大寫