-
檢測(cè)數(shù)組 利用instanceof(實(shí)例) 關(guān)鍵字
- 語(yǔ)法: arr instanceof Array 返回值: boolean值
-
排序
- 顛倒 : arr.reverse(); 返回值: 這個(gè)數(shù)組的引用
- 按大小排序:
- arr.asort();根據(jù)字符串Unicode碼點(diǎn)
- arr.asort(compareFunction); 返回值: 該數(shù)組的引用
案例:var arr = [20,1,42,12,18]; arr.asort(function(a,b){ return a-b;//a-b, 按升序; b-a, 降序. }) console.log(arr);//[1,12,18,20,42]
-
查找
- 索引: 查找數(shù)組其中一個(gè)元素的index:
- index : 常用來(lái)判斷數(shù)組是否含有某一個(gè)數(shù)據(jù)
- indexOf: 用來(lái)查找第一次出現(xiàn)的位置,
arr.indexOf(searchElement: mixed,fromIndex?:number);
返回值: 對(duì)應(yīng)的索引
注意: 第二個(gè)參數(shù)可選, 是從哪個(gè)索引開(kāi)始查詢(xún) - lastIndexOf: 用來(lái)查找某一最后出現(xiàn)的位置, 語(yǔ)法和indexOf 一樣
- indexOf: 用來(lái)查找第一次出現(xiàn)的位置,
- 值: arr[ i ], 返回值: 對(duì)應(yīng)下標(biāo)的值
- index : 常用來(lái)判斷數(shù)組是否含有某一個(gè)數(shù)據(jù)
- 索引: 查找數(shù)組其中一個(gè)元素的index:
-
截取數(shù)組 (不改變?cè)瓟?shù)組,這是從原數(shù)組截取一部分)
- slice() 方法: slice(start?number, end?number); 返回值: 截取好的新數(shù)組
- 不傳參: 截取全部
- slice(1,5): 從第一項(xiàng)開(kāi)始截取,包括第一項(xiàng), 但不包括第5項(xiàng)
- slice(1,-2): 從第一項(xiàng)開(kāi)始截取 截取到 倒數(shù)第二項(xiàng), 但不包括倒數(shù)第二項(xiàng)
案例 :var obj = { 0:1, 1:2, lenght:2 } //思路: obj 借用 數(shù)組的slice方法,slice返回一個(gè)新的數(shù)組 var obj = [].slice.call(obj); //var obj = [].slice.apply(obj); //注意: 截取的長(zhǎng)度為length屬性的值
- slice() 方法: slice(start?number, end?number); 返回值: 截取好的新數(shù)組
-
操作數(shù)組(改變?cè)瓟?shù)組)
- 插入
- 從最前 arr.unshift(element1,elementN) , 返回值: length屬性值
- 從最后 arr.push(element1,......elementN) , 返回值: length屬性值
偽數(shù)組借用push 方法(從lenght的值開(kāi)始插入, 如果length的值為0,或者沒(méi)有, 則從索引(屬性)0 開(kāi)始插入)
案例:0:0, 1:1, lenght: 2 } //用apply方法借用 [].push.apply(obj,[2,3,4]);//obj{0:0,1:1,2:2,3:3,4:4,length:5}; //用call方法借用 [].push.call(obj,5,6);//obj{0:0,1:1,2:2,3:3,4:4,5:5,6:6,length:7}; - 任意: arr.splice(start: number, 0 ,element1,......elementN), 利用splice方法, 參數(shù)1: 要從什么位置開(kāi)始插入, 參數(shù)2: 要?jiǎng)h除的個(gè)數(shù), 設(shè)為0, 參數(shù)3.....N: 要插入的項(xiàng)
- 刪除
- 從最前 arr.shift() : 刪除最前面的一項(xiàng); 返回值: 刪除項(xiàng).
- 從最后 arr.pop() ; 刪除最后一項(xiàng)(傳參無(wú)效); 返回值: 刪除項(xiàng).
- 任意 arr.splice(start: number, deleteCount?: number) ;返回值: 刪除的項(xiàng)組成的數(shù)組,deleteCount=0,則返回的數(shù)組為空
- 替換 arr.splice(start: number, deleteCount? : number , item1,item2......);
返回值: 刪除的項(xiàng)組成的數(shù)組, deleteCount=0, 則返回空數(shù)組 - 合并 concat()
方法用于合并兩個(gè)或多個(gè)數(shù)組。此方法不會(huì)更改現(xiàn)有數(shù)組,而是返回一個(gè)新數(shù)組。
splice()方法總結(jié) - 作用: 用來(lái)刪除 添加 替換 一個(gè)數(shù)組的內(nèi)容
語(yǔ)法:- array.splice(start:number) ; 注意 :從起始值開(kāi)始刪除后面全部.
- array.splice(start:number, deleteCount?: number); 注意: deleteCount >=0.
- array.splice(start:number,deleteCount?: number, mixed?:item1,mixed?:item2,......)
返回值: 刪除后每一項(xiàng)組成的數(shù)組
案例:
var obj = { 0:1, 1:2, length:2 } var obj = [].splice.call(obj,0);//[1,2]; //var obj = [].splice.apply(obj,[0]); //注意: 截取的長(zhǎng)度為length屬性的值
- 插入
-
array轉(zhuǎn)換成string的方法 join()
- 作用: 將數(shù)組或者一個(gè)類(lèi)數(shù)組轉(zhuǎn)換成一個(gè)字符串, 原數(shù)組不改變
語(yǔ)法:
str = arr.join(); // 返回的字符串默認(rèn)為","隔開(kāi)字符串的每一項(xiàng)
str = arr.join("")// 分隔符為""空字符串
str = arr.join(separator) // 以separator
參數(shù): separator, 可選
返回值: 所有的數(shù)組元素組成的字符串
- forEach()方法 : 對(duì)數(shù)組的每一個(gè)元素,執(zhí)行一次提供的函數(shù)(參數(shù))
語(yǔ)法:
arr.forEach(callback(currentValue,index,array){
? //要執(zhí)行的代碼
},this)arr.forEach(callback[,this]);
參數(shù)的含義
callback: 數(shù)組中每個(gè)元素都要執(zhí)行的函數(shù)
? 該函數(shù)有三個(gè)參數(shù)
- currentValue(callback函數(shù)調(diào)用時(shí)的數(shù)組的當(dāng)前值,相當(dāng)于for循環(huán)時(shí)的arr[i])
- index(索引) | 可選 :相當(dāng)于for循環(huán)時(shí)的i
- array | 可選 :調(diào)用forEach()方法的數(shù)組
this | 可選
返回值
undefined.
對(duì)this的理解
var obj = { name: "張山", age: 18, add: function (arr){ arr.forEach(function(v){ console.log("過(guò)%d年后"+this.name+ (this.age + v) + "歲",v); },this) } } obj.add([1,2,3,4]);//過(guò)1年后張山19歲....案例:
//將一個(gè)字符串轉(zhuǎn)換成對(duì)象 var str = "name=linyang&password=123"; var obj = {}; str.split("&").forEach(function(v){ obj[v.split("=")[0]] = v.split("=")[1] }) console.log(obj);//{name:"linyang",password:"123"};?
注意 : 沒(méi)有值得項(xiàng)會(huì)被跳過(guò), 像undefined 和 ""(空字符串) 不會(huì)被跳過(guò)
- 作用: 將數(shù)組或者一個(gè)類(lèi)數(shù)組轉(zhuǎn)換成一個(gè)字符串, 原數(shù)組不改變
-
map()方法: 用來(lái)創(chuàng)建一個(gè)新的數(shù)組,返回的新數(shù)組 是 數(shù)組中每個(gè)元素調(diào)用 callback 函數(shù) 返回的結(jié)果組成
語(yǔ)法:
var newArr = arr.map(callback (currentVallue,index,array){
//return 表達(dá)式;
},[this])
var newArr = arr.map(callbakc[,this])
參數(shù)的含義:
callback: 數(shù)組中每個(gè)元素要執(zhí)行的函數(shù)
? 該函數(shù)有三個(gè)參數(shù):
- currentValue: callback的 第一個(gè)參數(shù), 數(shù)組正在處理的當(dāng)前元素
- index | 可選: 數(shù)組正在處理的當(dāng)前元素的索引
- array | 可選: map方法調(diào)用的數(shù)組
this | 可選: 執(zhí)行callback函數(shù)時(shí), 使用的數(shù)組
返回值:
一個(gè)新的數(shù)組, 每個(gè)元素都是回調(diào)函數(shù)執(zhí)行的結(jié)果
注意 : 包括undefined和""空字符串
? 調(diào)用map方法的數(shù)組發(fā)生改變
案例:
//利用map來(lái)拼字符串生成一個(gè)表格 <div></div> <script> //利用map來(lái)拼字符串生成一個(gè)表格 var data = [ { name: "linyang", age: 18, gender: "man" }, { name: "jay", age: 38, gender: "man" }, { name: "lanxiaoyun", age: 17, gender: "girl" } ]; var html = '<table border="1"><tbody>' + data.map(function (v) { return "<tr>" + "<td>" + v.name + "</td>" + "<td>" + v.age + "</td>" + "<td>" + v.gender + "</td>" + "</tr>" }).join("") + '</tbody></table>' document.querySelector("div").innerHTML = html; </script>結(jié)果.png
? 注意: html結(jié)構(gòu)省略了
-
reduce()方法: 累計(jì)器 和 數(shù)組中的每一個(gè)元素應(yīng)用一個(gè)函數(shù), 最終累計(jì)成一個(gè)值. 累計(jì)器有一個(gè)初始值, 數(shù)組中的每一個(gè)元素和上一次執(zhí)行結(jié)果的累計(jì)器進(jìn)行應(yīng)用一個(gè)函數(shù); 初始值可以是一個(gè)數(shù)字, 比如初始值sum = 0, 和數(shù)組[1,2,3,4]進(jìn)行應(yīng)用, 則最終累計(jì)結(jié)果是: 10
var total = [1,2,3,4].reduce(function(sum,value){ return sum + value; },0)?
語(yǔ)法:
arr.reduce(callback[, initialValue])
參數(shù):
callback: 數(shù)組和累計(jì)器要應(yīng)用的函數(shù)
? 該函數(shù)有四個(gè)參數(shù):
? accumulator: 上一次調(diào)用的的返回值,初始值為initialValue
? 沒(méi)有initialValue時(shí),為數(shù)組的第0項(xiàng),reduce會(huì)從
? 索引1開(kāi)始執(zhí)行;
? currentValue:數(shù)組中正在處理的元素;
? currentIndex: 數(shù)組中正在處理的元素的索引;
? array: 調(diào)用reduce的數(shù)組
initialValue | 可選 : 調(diào)用callback時(shí)的初始值, 可以是簡(jiǎn)單number ,
? 數(shù)組或者對(duì)象等等.
返回值: 函數(shù)累計(jì)處理的結(jié)果
案例:
//將一個(gè)字符串轉(zhuǎn)換成一個(gè)對(duì)象 var str = "name=linyang&password=123"; var obj = str.split("&").reduce(function(acc,v){ acc[v.split("=")[0]] = v.split("=")[1]; retur acc; },{}) console.log(obj);?
