操作數(shù)組高階函數(shù)用法(部分)

操作數(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);
}

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書(shū)系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容