操作數(shù)組的函數(shù)方法(括號(hào)內(nèi)函數(shù)會(huì)改變?cè)瓟?shù)字)(pop push unshift shift splice reverse sort)
indexOf lastIndexof concat slice
1. pop 刪除數(shù)組的最后一個(gè)元素,同時(shí)返回刪除元素值,會(huì)改變數(shù)組
eg: var a =[1,2,3,4]; a.pop(); console.log(a); 結(jié)果:[1,2,3]
2. push 向數(shù)組尾部增加一個(gè)元素,同時(shí)返回?cái)?shù)組長(zhǎng)度,會(huì)改變?cè)瓟?shù)組
eg: var a=[1,2,3]; a.push(“s”); console.log(a); 結(jié)果:[1,2,3,”s”]
3. unshift() 方法可向數(shù)組的開(kāi)頭添加一個(gè)或更多元素,并返回新的長(zhǎng)度,會(huì)改變?cè)瓟?shù)組。
eg: var a= [1, 2, 3, "s"] a. unshift('d','f',6); console.log(a);
結(jié)果:["d", "f", 6, 1, 2, 3, "s"]
4. shift方法用于把數(shù)組的第一個(gè)元素從其中刪除,并返回第一個(gè)元素(刪除元素)的值。
eg: var a=["d", "f", 6, 1, 2, 3, "s"] ; a.shift(); 返回”d”
輸出a console.log(a); 結(jié)果["f", 6, 1, 2, 3, "s"]
5. splice方法向/從數(shù)組中添加/刪除項(xiàng)目,然后返回被刪除的項(xiàng)目
eg1: a= [6, 1, 2, 3, "d"]; a.splice(1,2); (從下標(biāo)為1的位置刪除2個(gè)元素)
返回:[1, 2]
輸出a console.log(a);
結(jié)果:[6, 3, "d"]
eg2: a= [6, 3, "d"]; a.splice(1,4,'v','i','e','w');
返回:[3, "d"]
輸出a
返回:[6, "v", "i", "e", "w"]
eg3:a= [6, "v", "i", "e", "w"]; a.splice(1,0,'hello');
返回:[]
輸出a,結(jié)果: [6, "hello", "v", "i", "e", "w"]
arrayObject.splice(index,howmany,item1,.....,itemX)
參數(shù) 描述
index 必需。整數(shù),規(guī)定添加/刪除項(xiàng)目的位置,使用負(fù)數(shù)可從數(shù)組結(jié)尾處規(guī)定位置。
howmany 必需。要?jiǎng)h除的項(xiàng)目數(shù)量。如果設(shè)置為 0,則不會(huì)刪除項(xiàng)目。
item1, ..., itemX 可選。向數(shù)組添加的新項(xiàng)目。
splice() 方法可刪除從 index 處開(kāi)始的零個(gè)或多個(gè)元素,并且用參數(shù)列表中聲明的一個(gè)或多個(gè)值來(lái)替換那些被刪除的元素。
如果從 arrayObject 中刪除了元素,則返回的是含有被刪除的元素的數(shù)組。
6.reverse() 方法用于顛倒數(shù)組中元素的順序。
注釋?zhuān)涸摲椒〞?huì)改變?cè)瓉?lái)的數(shù)組,而不會(huì)創(chuàng)建新的數(shù)組。
Eg1: var a= [6, "hello", "v", "i", "e", "w"];
reverse(); 返回: ["w", "e", "i", "v", "hello", 6]
7. sort() 排序數(shù)組
eg1:按字母順序升序
fruits = ["Banana", "Orange", "Apple", "Mango"]; fruits.sort();
返回結(jié)果:["Apple", "Banana", "Mango", "Orange"]
Eg2:按字?jǐn)?shù)字升序
var points = [40,100,1,5,25,10];
points.sort(function(a,b){return a-b});
返回結(jié)果:[1, 5, 10, 25, 40, 100]
Eg3:降序排序數(shù)組
var points = [40,100,1,5,25,10];
points.sort(function(a,b){return b-a});
返回結(jié)果:[100, 40, 25, 10, 5, 1]
8. indexOf() 方法可返回某個(gè)指定的字符串值在字符串中首次出現(xiàn)的位置。
語(yǔ)法
stringObject.indexOf(searchvalue,fromindex)
參數(shù) 描述
searchvalue 必需。規(guī)定需檢索的字符串值。
fromindex 可選的整數(shù)參數(shù)。規(guī)定在字符串中開(kāi)始檢索的位置。它的合法取值是 0 到 stringObject.length - 1。如省略該參數(shù),則將從字符串的首字符開(kāi)始檢索。
說(shuō)明
該方法將從頭到尾地檢索字符串 stringObject,看它是否含有子串 searchvalue。開(kāi)始檢索的位置在字符串的 fromindex 處或字符串的開(kāi)頭(沒(méi)有指定 fromindex 時(shí))。如果找到一個(gè) searchvalue,則返回 searchvalue 的第一次出現(xiàn)的位置。stringObject 中的字符位置是從 0 開(kāi)始的。
Eg: var str="Hello world!"
document.write(str.indexOf("Hello") + "<br />")
document.write(str.indexOf("World") + "<br />")
document.write(str.indexOf("world"))
以上代碼的輸出:
0
-1
6
9. lastIndexOf() 方法可返回一個(gè)指定的字符串值最后出現(xiàn)的位置,在一個(gè)字符串中的指定位置從后向前搜索。
參數(shù) 描述
searchvalue 必需。規(guī)定需檢索的字符串值。
fromindex 可選的整數(shù)參數(shù)。規(guī)定在字符串中開(kāi)始檢索的位置。它的合法取值是 0 到 stringObject.length - 1。如省略該參數(shù),則將從字符串的最后一個(gè)字符處開(kāi)始檢索。
返回值
如果在 stringObject 中的 fromindex 位置之前存在 searchvalue,則返回的是出現(xiàn)的最后一個(gè) searchvalue 的位置。
說(shuō)明
該方法將從尾到頭地檢索字符串 stringObject,看它是否含有子串 searchvalue。開(kāi)始檢索的位置在字符串的 fromindex 處或字符串的結(jié)尾(沒(méi)有指定 fromindex 時(shí))。如果找到一個(gè) searchvalue,則返回 searchvalue 的第一個(gè)字符在 stringObject 中的位置。stringObject 中的字符位置是從 0 開(kāi)始的。
提示和注釋
注釋?zhuān)簂astIndexOf() 方法對(duì)大小寫(xiě)敏感!
注釋?zhuān)喝绻獧z索的字符串值沒(méi)有出現(xiàn),則該方法返回 -1。
var str="Hello world!"
document.write(str.lastIndexOf("Hello") + "<br />")
document.write(str.lastIndexOf("World") + "<br />")
document.write(str.lastIndexOf("world"))
以上代碼的輸出:
0
-1
6
Eg: var str="hello world on oh!"; str.lastIndexOf('o'); 輸出:15
Eg: str.indexOf('o'); 輸出:4
10. concat 合并數(shù)組
var hege = ["Cecilie", "Lone"];
var stale = ["Emil", "Tobias", "Linus"];
var kai = ["Robin"];
var children = hege.concat(stale,kai);
輸出children ;結(jié)果:["Cecilie", "Lone", "Emil", "Tobias", "Linus", "Robin"]
11. slice() 方法可從已有的數(shù)組中返回選定的元素。
語(yǔ)法
arrayObject.slice(start,end)
參數(shù) 描述
start 必需。規(guī)定從何處開(kāi)始選取。如果是負(fù)數(shù),那么它規(guī)定從數(shù)組尾部開(kāi)始算起的位置。也就是說(shuō),-1 指最后一個(gè)元素,-2 指倒數(shù)第二個(gè)元素,以此類(lèi)推。
end 可選。規(guī)定從何處結(jié)束選取。該參數(shù)是數(shù)組片斷結(jié)束處的數(shù)組下標(biāo)。如果沒(méi)有指定該參數(shù),那么切分的數(shù)組包含從 start 到數(shù)組結(jié)束的所有元素。如果這個(gè)參數(shù)是負(fù)數(shù),那么它規(guī)定的是從數(shù)組尾部開(kāi)始算起的元素。
返回值
返回一個(gè)新的數(shù)組,包含從 start 到 end (不包括該元素)的 arrayObject 中的元素。
說(shuō)明
請(qǐng)注意,該方法并不會(huì)修改數(shù)組,而是返回一個(gè)子數(shù)組。如果想刪除數(shù)組中的一段元素,應(yīng)該使用方法 Array.splice()。
var arr = new Array(3)
arr[0] = "George"
arr[1] = "John"
arr[2] = "Thomas"
document.write(arr + "<br />")
document.write(arr.slice(1) + "<br />")
document.write(arr)
輸出:
George,John,Thomas
John,Thomas
George,John,Thomas
forEach filter(過(guò)濾) map(映射) find some every includes reduce
(find includes es6)
node 版本
LTS標(biāo)準(zhǔn)版 9.00Current 當(dāng)前最新版
1. orEach() 方法用于調(diào)用數(shù)組的每個(gè)元素,并將元素傳遞給回調(diào)函數(shù)。
注意: forEach() 對(duì)于空數(shù)組是不會(huì)執(zhí)行回調(diào)函數(shù)的。
array.forEach(function(currentValue, index, arr), thisValue)
參數(shù) 描述
function(currentValue, index, arr) 必需。 數(shù)組中每個(gè)元素需要調(diào)用的函數(shù)。
函數(shù)參數(shù):
參數(shù) 描述
currentValue 必需。當(dāng)前元素
index 可選。當(dāng)前元素的索引值。
arr 可選。當(dāng)前元素所屬的數(shù)組對(duì)象。
thisValue 可選。傳遞給函數(shù)的值一般用 "this" 值。
如果這個(gè)參數(shù)為空, "undefined" 會(huì)傳遞給 "this" 值
Eg:
var s = ["Cecilie", "Lone", "Emil", "Tobias", "Linus", "Robin"];
s.forEach(function(item,index,s){
console.log("item:"+item);
console.log("index:"+index);
console.log("s:"+s);
},this);
14:46:28.079 VM1460:4 item:Cecilie
14:46:28.080 VM1460:5 index:0
14:46:28.080 VM1460:6 s:Cecilie,Lone,Emil,Tobias,Linus,Robin
14:46:28.080 VM1460:4 item:Lone
14:46:28.080 VM1460:5 index:1
14:46:28.080 VM1460:6 s:Cecilie,Lone,Emil,Tobias,Linus,Robin
14:46:28.081 VM1460:4 item:Emil
14:46:28.081 VM1460:5 index:2
14:46:28.081 VM1460:6 s:Cecilie,Lone,Emil,Tobias,Linus,Robin
14:46:28.081 VM1460:4 item:Tobias
14:46:28.081 VM1460:5 index:3
14:46:28.082 VM1460:6 s:Cecilie,Lone,Emil,Tobias,Linus,Robin
14:46:28.082 VM1460:4 item:Linus
14:46:28.082 VM1460:5 index:4
14:46:28.082 VM1460:6 s:Cecilie,Lone,Emil,Tobias,Linus,Robin
14:46:28.082 VM1460:4 item:Robin
14:46:28.082 VM1460:5 index:5
14:46:28.082 VM1460:6 s:Cecilie,Lone,Emil,Tobias,Linus,Robin
14:46:28.104 undefined
2. filter
array.filter(function(currentValue,index,arr), thisValue)
參數(shù) 描述
function(currentValue, index,arr) 必須。函數(shù),數(shù)組中的每個(gè)元素都會(huì)執(zhí)行這個(gè)函數(shù)
函數(shù)參數(shù):
參數(shù) 描述
currentValue 必須。當(dāng)前元素的值
index 可選。當(dāng)前元素的索引值
arr 可選。當(dāng)前元素屬于的數(shù)組對(duì)象
thisValue 可選。對(duì)象作為該執(zhí)行回調(diào)時(shí)使用,傳遞給函數(shù),用作 "this" 的值。
如果省略了 thisValue ,"this" 的值為 "undefined"
var s = [1,20,40,0,-60,100,209];
s.filter(function(item){
return item>10;
});
結(jié)果:[20, 40, 100, 209]
3. map
map定義和方法
map()方法返回一個(gè)新數(shù)組,數(shù)組中的元素為原始數(shù)組元素調(diào)用函數(shù)處理的后值。
map()方法按照原始數(shù)組元素順序依次處理元素。
注意:
map不會(huì)對(duì)空數(shù)組進(jìn)行檢測(cè)
map不會(huì)改變?cè)紨?shù)組
arr.map(function(currentValue,index,arr),thisValue)
參數(shù)說(shuō)明
function(currentValue,index,arr)
必須,函數(shù),數(shù)組中的每個(gè)元素都會(huì)執(zhí)行這個(gè)函數(shù)函數(shù)參數(shù)
函數(shù)參數(shù)
currentValue 必須 當(dāng)前元素值
index 可選 當(dāng)前元素的索引值
arr 可選 當(dāng)前元素屬于的數(shù)組對(duì)象。
var numbers = [25,36,121,49];
function myFunction(num,index,arr){
console.log(arr);
return num * 10;
}
numbers.map(myFunction);
15:12:18.585 VM1521:4 (4) [25, 36, 121, 49]
15:12:18.585 VM1521:4 (4) [25, 36, 121, 49]
15:12:18.586 VM1521:4 (4) [25, 36, 121, 49]
15:12:18.586 VM1521:4 (4) [25, 36, 121, 49]
15:12:18.596 (4) [250, 360, 1210, 490]
4. find
find() 方法返回傳入一個(gè)測(cè)試條件(函數(shù))符合條件的數(shù)組第一個(gè)元素。
find() 方法為數(shù)組中的每個(gè)元素都調(diào)用一次函數(shù)執(zhí)行:
? 當(dāng)數(shù)組中的元素在測(cè)試條件時(shí)返回 true 時(shí), find() 返回符合條件的元素,之后的值不會(huì)再調(diào)用執(zhí)行函數(shù)。
? 如果沒(méi)有符合條件的元素返回 undefined
注意: find() 對(duì)于空數(shù)組,函數(shù)是不會(huì)執(zhí)行的。
注意: find() 并沒(méi)有改變數(shù)組的原始值。
表格中的數(shù)字表示支持該方法的第一個(gè)瀏覽器版本號(hào)。
方法 谷歌 IE 火狐 Safri opera
find() 45.0 12.0 25.0 7.1 32.0
注意: IE 11 及更早版本不支持 find() 方法。
array.find(function(currentValue, index, arr),thisValue)
參數(shù) 描述
function(currentValue, index,arr) 必需。數(shù)組每個(gè)元素需要執(zhí)行的函數(shù)。
函數(shù)參數(shù):
參數(shù) 描述
currentValue 必需。當(dāng)前元素
index 可選。當(dāng)前元素的索引值
arr 可選。當(dāng)前元素所屬的數(shù)組對(duì)象
thisValue 可選。 傳遞給函數(shù)的值一般用 "this" 值。
如果這個(gè)參數(shù)為空, "undefined" 會(huì)傳遞給 "this" 值
var ages = [4, 12, 16, 20];
function checkAdult(age){
return age >= 18 }
ages.find(checkAdult);
輸出結(jié)果:20
5. some() 方法用于檢測(cè)數(shù)組中的元素是否滿(mǎn)足指定條件(函數(shù)提供)。
some() 方法會(huì)依次執(zhí)行數(shù)組的每個(gè)元素:
? 如果有一個(gè)元素滿(mǎn)足條件,則表達(dá)式返回true , 剩余的元素不會(huì)再執(zhí)行檢測(cè)。
? 如果沒(méi)有滿(mǎn)足條件的元素,則返回false。
注意: some() 不會(huì)對(duì)空數(shù)組進(jìn)行檢測(cè)。
注意: some() 不會(huì)改變?cè)紨?shù)組。
語(yǔ)法
array.some(function(currentValue,index,arr),thisValue)
參數(shù) 描述
function(currentValue, index,arr) 必須。函數(shù),數(shù)組中的每個(gè)元素都會(huì)執(zhí)行這個(gè)函數(shù)
函數(shù)參數(shù):
參數(shù) 描述
currentValue 必須。當(dāng)前元素的值
index 可選。當(dāng)期元素的索引值
arr 可選。當(dāng)期元素屬于的數(shù)組對(duì)象
thisValue 可選。對(duì)象作為該執(zhí)行回調(diào)時(shí)使用,傳遞給函數(shù),用作 "this" 的值。
如果省略了 thisValue ,"this" 的值為 "undefined"
Eg:
var ages = [4, 12, 16, 20];
function checkAdult(age) {
return age >= 18;
}
ages.some(checkAdult);
結(jié)果:true
6. every
every() 方法用于檢測(cè)數(shù)組所有元素是否都符合指定條件(通過(guò)函數(shù)提供)。
every() 方法使用指定函數(shù)檢測(cè)數(shù)組中的所有元素:
? 如果數(shù)組中檢測(cè)到有一個(gè)元素不滿(mǎn)足,則整個(gè)表達(dá)式返回 false ,且剩余的元素不會(huì)再進(jìn)行檢測(cè)。
? 如果所有元素都滿(mǎn)足條件,則返回 true。
注意: every() 不會(huì)對(duì)空數(shù)組進(jìn)行檢測(cè)。
注意: every() 不會(huì)改變?cè)紨?shù)組。
語(yǔ)法
array.every(function(currentValue,index,arr), thisValue)
參數(shù) 描述
function(currentValue, index,arr) 必須。函數(shù),數(shù)組中的每個(gè)元素都會(huì)執(zhí)行這個(gè)函數(shù)
函數(shù)參數(shù):
參數(shù) 描述
currentValue 必須。當(dāng)前元素的值
index 可選。當(dāng)前元素的索引值
arr 可選。當(dāng)前元素屬于的數(shù)組對(duì)象
thisValue 可選。對(duì)象作為該執(zhí)行回調(diào)時(shí)使用,傳遞給函數(shù),用作 "this" 的值。
如果省略了 thisValue ,"this" 的值為 "undefined"
7. includes是否包含給定的值,返回true 或false
[1, 2, 3].includes(2); // true
[1, 2, 3].includes(4); // false
[1, 2, NaN].includes(NaN); // true
8. reduce() 方法接收一個(gè)函數(shù)作為累加器,數(shù)組中的每個(gè)值(從左到右)開(kāi)始縮減,最終計(jì)算為一個(gè)值。
reduce() 可以作為一個(gè)高階函數(shù),用于函數(shù)的 compose。
注意: reduce() 對(duì)于空數(shù)組是不會(huì)執(zhí)行回調(diào)函數(shù)的。
array.reduce(function(total, currentValue, currentIndex, arr), initialValue)
參數(shù) 描述
function(total,currentValue, index,arr) 必需。用于執(zhí)行每個(gè)數(shù)組元素的函數(shù)。
函數(shù)參數(shù):
參數(shù) 描述
total 必需。初始值, 或者計(jì)算結(jié)束后的返回值。
currentValue 必需。當(dāng)前元素
currentIndex 可選。當(dāng)前元素的索引
arr 可選。當(dāng)前元素所屬的數(shù)組對(duì)象。
initialValue 可選。傳遞給函數(shù)的初始值
var numbers = [15.5, 2.3, 1.1, 4.7];
function getSum(total, num) { return total + Math.round(num); }
numbers.reduce(getSum, 0);
輸出結(jié)果:24
var numbers = [15.5, 2.3, 1.1, 4.7];
function getSum(total, num) { return total + Math.round(num); }
numbers.reduce(getSum, 10);
輸出結(jié)果:34
[1,2,3,4,5].reduce(function(prev,next,index,item){
console.log(arguments);
});
Question:
Let arr=[1,2,3,4,5];
For(let i=0;i<arr.length;i++){//編程式
Console.log(arr[i]);
}
//forEach 不支持returns
forEach,for in, for,for of的區(qū)別
arr.forEach(function(item){//聲明式(不關(guān)心如何實(shí)現(xiàn))
{
console.log(item);
}
});
for(let key in arr){//key會(huì)變成字符串類(lèi)型,包括數(shù)組的私有屬性也可以打印出來(lái)
console.log(key);
}
For(let val of arr){//支持return 并且是值of數(shù)組(不能遍歷對(duì)象)
console.log(val);
}