摘要:語法函數(shù)的幾個(gè)參數(shù)含義上一次執(zhí)行函數(shù)后返回的值當(dāng)前數(shù)組元素值當(dāng)前數(shù)組元素索引遍歷的數(shù)組對(duì)象第一次調(diào)用函數(shù)時(shí),如果有值,則為,為數(shù)組第一個(gè)元素。
Javascript 中的 Array 操作
在各種語言中,數(shù)組總是一個(gè)比較重要的數(shù)據(jù)結(jié)構(gòu),Javascript 中的 Array 也不例外。Javascript 中的 Array 提供了一系列方法可以更好地讓我們操作 Array 中的元素,下面我們就來看看這些操作方法。
Array 之基本操作在基本操作部分,我們約定,加粗的方法可以改變數(shù)組本身,其余方法不改變。
1、 Array 創(chuàng)建利用字面量創(chuàng)建 Array (推薦): var arr = [];
利用 Array 對(duì)象創(chuàng)建 Array: var arr = new Array([length]);//可以指定數(shù)組長(zhǎng)度,注意不是數(shù)組上限;
利用 Array 對(duì)象創(chuàng)建 Array: var arr = new Array(value1, value2, value3, …);
注意:Javascript 中 Array 中的元素不要求類型一致;
var value = arr[index];
Array.slice(start[, end]);//從 start 位置開始截取原數(shù)組至 end (不包括 end 位置),返回截取的數(shù)組。若省略 end ,則截取 start 位置后所有元素;
3、 Array 添加與刪除元素 在數(shù)組末尾添加或刪除元素:Array.push(value1, value2, vlaue3, …);//將一個(gè)或多個(gè)元素附加在數(shù)組末尾,并返回新數(shù)組長(zhǎng)度;
Array.pop();//移除數(shù)組最后一個(gè)值,并返回該元素值;
在數(shù)組開始添加或刪除元素:Array.unshif(value1, value2, value3, …);//將一個(gè)或多個(gè)元素附加在數(shù)組開頭,原數(shù)組元素依次后移,并返回新數(shù)組長(zhǎng)度;
Array.shift();//移除數(shù)組第一個(gè)值,并返回該元素值;
在任意位置添加或刪除元素:Array.splice(pos, 0, value1, value2, value3, ...);//從數(shù)組 pos 位置開始刪除 0 個(gè)元素,并在刪除的位置插入value1, vlaue2, vlaue3…,并返回一個(gè)空數(shù)組;
Array.splice(pos, count);//從數(shù)組 pos 位置開始刪除 count 個(gè)元素,
4、 Array 合并Array.concat(para);// para 可以為數(shù)組或元素值,也可以為兩者組合,將所有元素連接成一個(gè)數(shù)組,返回連接好的數(shù)組;
5、 Array 字符串化Array.join(sperator);//返回由數(shù)組元素組成并由 seperator 分隔的字符串。若 seperator 為空,則默認(rèn)以 “,” 連接;
Array.toString()和Array.toLocaleString();//返回由數(shù)組元素組成并由“,”分隔的字符串(不常用);兩種方法的區(qū)別在于 toLocaleString() 會(huì)轉(zhuǎn)變?yōu)楸镜丨h(huán)境字符串(如Date.toLocalString() 會(huì)轉(zhuǎn)化為當(dāng)?shù)貢r(shí)間格式的字符串),toString() 則轉(zhuǎn)為傳統(tǒng)字符串; Array 的這兩種方法用法無區(qū)別;
6、 Array 排序Array.reverse();//顛倒數(shù)組中的元素;
Array.sort();//按字符編碼進(jìn)行排序,支持自定義排序函數(shù);
7、 Array 查找indexOf()//返回第一個(gè)與給定參數(shù)相等的數(shù)組元素的索引,沒有找到則返回-1。
lastIndexOf()//返回在數(shù)組中搜索到的與給定參數(shù)相等的元素的最后(最大)索引。
8、 其他函數(shù)Array.isArray();//判斷某個(gè)值是否為數(shù)組;
Array 之高級(jí)操作首先介紹 Array 的 5 種迭代函數(shù)。這 5 種函數(shù)的特點(diǎn)是都有一個(gè) callback 函數(shù),函數(shù)會(huì)為每一個(gè)數(shù)組元素調(diào)用一次 callback 函數(shù)。可選參數(shù)是 thisArg, 作為 callback被調(diào)用時(shí)的 this 值,如果沒有傳入 thisArg 值,則在非嚴(yán)格模式下將會(huì)是全局對(duì)象,嚴(yán)格模式下是 undefined。其中,callback 函數(shù)中包含三個(gè)參數(shù),分別是當(dāng)前元素的值、當(dāng)前元素索引和被遍歷的數(shù)組。這 5 種函數(shù)遍歷的元素個(gè)數(shù)在第一次調(diào)用 callback 函數(shù)時(shí)就已經(jīng)確定,即以后即使添加元素也不會(huì)改變遍歷次數(shù),未訪問到且被刪除的值不會(huì)被 callback 訪問到,未訪問到且被修改的元素被修改后,傳遞給 callback 的值是被修改后的值。
1、 Array.forEach()遍歷并為每一項(xiàng)元素執(zhí)行一遍 callback 函數(shù)。是 5 個(gè)函數(shù)中唯一一個(gè)沒有返回值的函數(shù)。
var arr = [1, 2, 3]; arr.forEach(function(ele) { console.log(ele); });
運(yùn)行結(jié)果:
1 2 32、 Array.map()
遍歷并處理所有元素,返回由每個(gè) callback 函數(shù)返回值組成的新數(shù)組。
var arr = [1, 2, 3]; var newArr = arr.map(function(ele) { return "element" + ele; }); console.log(newArr); console.log(arr);
運(yùn)行結(jié)果:
["element1", "element2", "element3"] [1, 2, 3]3、 Array.filter()
遍歷所有元素,過濾掉不符合條件(即使得 callback 返回 false)的元素。
var arr = [1, 2, 3, 11, 12, 13]; var newArr = arr.filter(function(ele) { return ele > 10; }); console.log(newArr); console.log(arr);
運(yùn)行結(jié)果:
[11, 12, 13] [1, 2, 3, 11, 12, 13]4、 Array.every()
遍歷所有元素,當(dāng)所有元素使得 callback 返回 true,則返回 true,否則返回 false。
var arr1 = [9, 12, 13]; var result1 = arr1.every(function(ele) { return ele > 10; }); var arr2 = [11, 12, 13]; var result2 = arr2.every(function(ele) { return ele > 10; }); console.log(arr1); console.log("result1:" + result1); console.log(arr2); console.log("result2:" + result2);
運(yùn)行結(jié)果:
[9, 12, 13] result1:false [11, 12, 13] result2:true5、 Array.some()
遍歷所有元素,只要找到一個(gè)元素使得 callback 返回 true,則返回 true,否則返回 false。
var arr1 = [1,3,5,7,9]; var result1 = arr1.some(function(ele) { return ele > 10; }); var arr2 = [1,2,3,11]; var result2 = arr2.some(function(ele) { return ele > 10; }); console.log(arr1); console.log("result1:" + result1); console.log(arr2); console.log("result2:" + result2);
運(yùn)行結(jié)果:
[1, 3, 5, 7, 9] result1:false [1, 2, 3, 11] result2:true6、 Array.reduce()
將數(shù)組中的元素從左到右進(jìn)行縮減,最終縮減為一個(gè)值。
Array.reduce()語法:
Array.reduce(function(previousValue, currentValue, index, array){ }, [initialValue]);
callback 函數(shù)的幾個(gè)參數(shù)含義:
previousValue:上一次執(zhí)行 callback 函數(shù)后返回的值
currentValue:當(dāng)前數(shù)組元素值
index:當(dāng)前數(shù)組元素索引
array:遍歷的數(shù)組對(duì)象
第一次調(diào)用 callback 函數(shù)時(shí),如果 initialValue 有值,則 previousValue 為 initialValue,
currentValue 為數(shù)組第一個(gè)元素。否則 previousValue 為數(shù)組第一個(gè)元素,currentValue 為數(shù)組第二個(gè)元素。
var arr = ["a", "b", "c"]; arr.reduce(function(pre, cur, ind, array) { console.log(ind); });
運(yùn)行結(jié)果:
1 2
再看另一個(gè)有 initialValue 的例子:
var arr = ["a", "b", "c"]; arr.reduce(function(pre, cur, ind, array) { console.log(ind); }, "z");
運(yùn)行結(jié)果是:
0 1 2
隨著 ES6 的誕生,Array 出現(xiàn)了更多的方法。考慮到瀏覽器的兼容性,在使用下面的方法時(shí)需要注意所使用的瀏覽器是否支持。
7、Array.from()將一個(gè)類數(shù)組對(duì)象或可迭代對(duì)象轉(zhuǎn)換成真實(shí)的數(shù)組。
類數(shù)組對(duì)象: 擁有一個(gè) length 屬性和若干索引屬性的任意對(duì)象
可迭代對(duì)象: 你可以從它身上迭代出若干個(gè)元素的對(duì)象,比如有 Map 和 Set 等(Map 與 Set 均為 ES6 中新的對(duì)象)
var arr = Array.from("Hello"); console.log(arr);
運(yùn)行結(jié)果:
[ "H", "e", "l", "l", "o" ]8、Array.values()
將一個(gè)數(shù)組轉(zhuǎn)換成一個(gè)可迭代的對(duì)象,該對(duì)象包含數(shù)組每個(gè)索引的值。
var arr = ["a", "b", "c"]; var obj = arr.values(); for (let letter of obj) { console.log(letter); }
運(yùn)行結(jié)果:
a b c
文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請(qǐng)注明本文地址:http://specialneedsforspecialkids.com/yun/86057.html
摘要:的這種實(shí)現(xiàn)方式導(dǎo)致了一些尷尬問題,比如刪除元素元素遍歷。后面的參數(shù)被忽略掉了,表示并沒有要插入的元素。其實(shí),的本質(zhì)是跟蹤中的,并始終保持值是。這時(shí)候,雖然不大可能,可能會(huì)在中間某個(gè)中被用戶重新定義。但是在上進(jìn)行這種操作是很糟糕的。 在Javascript中,array是一個(gè)類數(shù)組的object。顧名思義,它能夠在一個(gè)變量上存儲(chǔ)多個(gè)值。 數(shù)組是值的有序集合。每個(gè)值叫做一個(gè)元素,而每個(gè)元素...
摘要:常規(guī)元素,不能表示為或雙精度的值。元素種類可從過渡轉(zhuǎn)變?yōu)椤_@是一個(gè)簡(jiǎn)化的可視化,僅顯示最常見的元素種類只能通過格子向下過渡。目前有種不同的元素種類,每種元素都有自己的一組可能的優(yōu)化。再次重申更具體的元素種類可以進(jìn)行更細(xì)粒度的優(yōu)化。 原文:Elements kinds in V8 JavaScript 對(duì)象可以具有與它們相關(guān)聯(lián)的任意屬性。對(duì)象屬性的名稱可以包含任何字符。JavaScrip...
摘要:數(shù)組元素甚至可以是對(duì)象或其它數(shù)組。它執(zhí)行的是淺拷貝,這意味著如果數(shù)組元素是對(duì)象,兩個(gè)數(shù)組都指向相同的對(duì)象,對(duì)新數(shù)組中的對(duì)象修改,會(huì)在舊的數(shù)組的相同對(duì)象中反應(yīng)出來。 JS中的數(shù)組是弱類型的,數(shù)組中可以含有不同類型的元素。數(shù)組元素甚至可以是對(duì)象或其它數(shù)組。JS引擎一般會(huì)優(yōu)化數(shù)組,按索引訪問數(shù)組常常比訪問一般對(duì)象屬性明顯迅速。數(shù)組長(zhǎng)度范圍 from 0 to 4,294,967,295(2^...
摘要:中并沒有明確的數(shù)組數(shù)據(jù)類型。返回?cái)?shù)組對(duì)象的原始值。專門用于篩選出數(shù)組中符合函數(shù)判斷條件的元素組成的心數(shù)組。專門用于對(duì)原數(shù)組中每個(gè)元素執(zhí)行相同的函數(shù)對(duì)象規(guī)定的操作。 概述 一維數(shù)組 數(shù)組是一個(gè)有序的數(shù)據(jù)集合,可以通過數(shù)組名稱和索引進(jìn)行訪問。JavaScript中并沒有明確的數(shù)組數(shù)據(jù)類型。 二維數(shù)組 數(shù)組是可以嵌套的,這就意味著一個(gè)數(shù)組可以作為一個(gè)袁旭被包含在另一個(gè)數(shù)組里面。利用JavaS...
摘要:中并沒有明確的數(shù)組數(shù)據(jù)類型。創(chuàng)建一維數(shù)組具有以下幾種方式二維數(shù)組數(shù)組是可以嵌套,這就意味著一個(gè)數(shù)組可以作為一個(gè)數(shù)組被包含在另外一個(gè)數(shù)組里面。利用這個(gè)特點(diǎn),創(chuàng)建二維數(shù)組,即數(shù)組的數(shù)組。刪除數(shù)組的最后一個(gè)元素并返回刪除的元素。 Array 概述 一維數(shù)組 數(shù)組是一個(gè)有序的數(shù)據(jù)集合,可以通過數(shù)組名稱和索引進(jìn)行訪問。JavaScript中并沒有明確的數(shù)組數(shù)據(jù)類型。創(chuàng)建一維數(shù)組具有以下幾種方式:...
閱讀 1270·2023-04-25 19:10
閱讀 1146·2021-09-10 10:50
閱讀 3034·2021-09-02 15:21
閱讀 1390·2019-08-30 15:52
閱讀 1687·2019-08-30 13:56
閱讀 2091·2019-08-30 12:53
閱讀 1876·2019-08-28 18:22
閱讀 2128·2019-08-26 13:47