摘要:如果沒有符合條件的成員,則返回返回查找到的該成員該方法與類似,對數(shù)組中的成員依次執(zhí)行函數(shù),直至找到第一個(gè)返回值為的成員,然后返回該成員的索引。
摘要
最近學(xué)習(xí)了JS數(shù)組的基礎(chǔ)知識,在這里呢總結(jié)一下,包括js數(shù)組的屬性與方法,js數(shù)組常常遇到的一些問題,小編通過查閱一些網(wǎng)上的知識,把關(guān)于數(shù)組的東西進(jìn)行了羅列,希望各位大神多多指點(diǎn)!
數(shù)組屬性length
length屬性表示數(shù)組的長度,即其中元素的個(gè)數(shù)。
JavaScript數(shù)組的length屬性是可變的,當(dāng)length屬性被設(shè)置得更大時(shí),整個(gè)數(shù)組的狀態(tài)事實(shí)上不會發(fā)生變化,僅僅是length屬性變大;當(dāng)length屬性被設(shè)置得比原來小時(shí),則原先數(shù)組中索引大于或等于length的元素的值全部被丟失。
prototype
返回對象類型原型的引用。prototype 屬性是 object 共有的。
一般用來給數(shù)組實(shí)例添加方法。
constructor
表示創(chuàng)建對象的函數(shù)。
說明:constructor 屬性是所有具有 prototype 的對象的成員。constructor 屬性保存了對構(gòu)造特定對象實(shí)例的函數(shù)的引用。
創(chuàng)建數(shù)組
// 數(shù)組實(shí)例的創(chuàng)建 var arr = [];//創(chuàng)建空數(shù)組 var arr = [1,"{1,2}","string"];//創(chuàng)建一個(gè)數(shù)組并賦值 var arr = new Array(); //創(chuàng)建一個(gè)空數(shù)組 [] var arr = new Array(5); //創(chuàng)建一個(gè)length為5的數(shù)組 [undefined, undefined, undefined, undefined, undefined] var arr = new Array(1,2,3,4,5); //創(chuàng)建數(shù)組并賦值 [1,2,3,4,5] var arr = Array.of(7); // 創(chuàng)建數(shù)組并賦值 [7] var arr = Array.of(1, 2, 3); // 創(chuàng)建數(shù)組并賦值 [1, 2, 3]
檢測數(shù)組
//判斷一個(gè)對象是不是數(shù)組 var arr = [1,8,9]; /* 方法一 instanceof是Java、php的一個(gè)二元操作符(運(yùn)算符),和==,>,<是同一類東西,它的作用是判斷其左邊對象是否為其右邊類的實(shí)例,返回boolean類型的數(shù)據(jù) */ if(arr instanceof Array){} /* 方法二 prototype 屬性使您有能力向?qū)ο筇砑訉傩院头椒?*/ if(Object.prototype.toString.call(arr) == "[object Array]")}{} //方法三 這種是最常用的方法 if(Array.isArray(arr)){} /* 方法四 constructor 屬性返回對創(chuàng)建此對象的數(shù)組函數(shù)的引用,Construction代表類中的一個(gè)構(gòu)造方法,這個(gè)方法封裝了類的定義 */ if(arr.constructor == Array){}數(shù)組方法
① isArray()
Array.isArray(obj) 檢測對象是否 Array(數(shù)組) ,是則返回true,否則為false。
② from()
Array.from(arrayLike, mapFn, thisArg)
該方法從一個(gè)類似數(shù)組或可迭代對象創(chuàng)建一個(gè)新的數(shù)組實(shí)例。參數(shù) arrayLike 是想要轉(zhuǎn)換成真實(shí)數(shù)組的類數(shù)組對象或可遍歷對象。mapFn是可選參數(shù),如果指定了該參數(shù),則最后生成的數(shù)組會經(jīng)過該函數(shù)的加工處理后再返回。thisArg是可選參數(shù),為執(zhí)行 mapFn 函數(shù)時(shí) this的值。
所謂類似數(shù)組的對象,本質(zhì)特征只有一點(diǎn),即必須有l(wèi)ength屬性。因此,任何有l(wèi)ength屬性的對象,都可以通過Array.from方法轉(zhuǎn)為數(shù)組。見下面的小例子:
var arrayLike = { 0: "a", 1: "b", 2: "c", length: 3 } var arrayLike2 = {length: 3} var str = "abcd" var newArray = Array.from(arrayLike) //["a", "b", "c"] var newArray2 = Array.from(arrayLike2) // [undefined, undefined, undefined] var newArray3 = Array.from(str) // ["a", "b", "c", "d"] console.log(newArray); console.log(newArray2); console.log(newArray3);
③ of();
Array.of(item,.....) 該方法用于創(chuàng)建數(shù)組實(shí)例。該方法用于替代 Array() 或 new Array()。Array.of() 和 Array 構(gòu)造函數(shù)之間的區(qū)別在于處理整數(shù)參數(shù):Array.of(7) 創(chuàng)建一個(gè)具有單個(gè)元素 7 的數(shù)組,而 Array(7) 創(chuàng)建一個(gè)包含 7 個(gè) undefined 元素的數(shù)組。
eg:
var a1 = Array(7); var a2 = Array(1,2,12); var a3 = Array.of(7); var a4 =Array.of(1,2,12); console.log(a1); console.log(a2); console.log(a3); console.log(a4);數(shù)組實(shí)例方法
數(shù)組的轉(zhuǎn)換
① 數(shù)組轉(zhuǎn)換成字符串 Array.join(separator);.
把數(shù)組轉(zhuǎn)換成字符串,先把數(shù)組中的每個(gè)元素轉(zhuǎn)換成字符串,然后再用 separator 分隔符把它們鏈接在一起,separator 分隔符默認(rèn)是逗號 “,”,要想做到無間隔鏈接,可以使用空字符串作為 separator:見下面的例子:
var arr = [1,2,3,4,5] //默認(rèn)符號 "," var a1 = arr.join();//1,2,3,4,5 //自定義符號“ | ” var a2=arr.join("|") //"1|2|3|4|5" // 沒有符號,用空字符串 var a3=arr.join("") //12345 console.log(a1); console.log(a2); console.log(a3);
② 字符串轉(zhuǎn)換成數(shù)組 a.split();
var arr = [1,2,3,4,5] //arr 轉(zhuǎn)換成字符串并賦值給 a var a = arr.join(); // 再把 a 轉(zhuǎn)換成 數(shù)組,并用“ , ”隔開 var b = a.split(","); console.log(b);
棧方法 (push pop)
Array.push(item......)將一個(gè)或多個(gè)新元素添加到數(shù)組結(jié)尾,并返回數(shù)組新長度。
var arr = ["Orange","Apple"]; var a = arr.push("banana","Mango"); console.log(a);//返回?cái)?shù)值長度為 4
Array.pop() 移除最后一個(gè)元素并返回該元素值。
var arr = ["Orange","Apple"]; var a = arr.pop(); console.log(a);// 移除最后一個(gè)元素 返回最后一個(gè)值A(chǔ)pple
隊(duì)列方法 (unshift shift)
Array.unshift(item...);將一個(gè)或多個(gè)新元素添加到數(shù)組開始,數(shù)組中的元素自動后移,返回?cái)?shù)組新長度。
var arr = ["Orange","Apple"]; var a = arr.unshift("banana"); console.log(a);// 返回新數(shù)組的長度為 3
Array.shifit();移除最前一個(gè)元素并返回該元素值,數(shù)組中元素自動前移.如果這個(gè)數(shù)組是空的,它會返回undefined。shift 通常比 pop 慢的多。
var arr = ["Orange","Apple","banana"]; var arr1 = []; var a1 = arr1.shift(); var a2 = arr.shift(); console.log(a1);// 空數(shù)組返回undefined console.log(a2);// 移除第一個(gè)元素,并返回該元素 Orange
重排序方法(reverse, sort)
Array.reverse() 顛倒數(shù)組的順序
var arr = ["Orange","Apple","banana"]; var a = arr.reverse(); console.log(a);
Array.sort() 給數(shù)組排序, 默認(rèn)升序。 sort 默認(rèn)會將數(shù)組內(nèi)容視為字符串來排序,所以對數(shù)字排序時(shí)默認(rèn)的排序規(guī)則會錯(cuò)的離譜,看下面的例子是怎么錯(cuò)的:
var arr = [2,4,10,6,8,20]; var a = arr.sort(); console.log(a);
解決這種按照字符串來排序的方法就是給sort帶入個(gè)比較函數(shù)來替代原來默認(rèn)的比較方法,比較方法接受兩個(gè)參數(shù),如果兩個(gè)參數(shù)相等則返回0,如果第一個(gè)參數(shù)應(yīng)該排在前面則返回一個(gè)負(fù)數(shù),如果第二個(gè)參數(shù)應(yīng)該排在前面則返回一個(gè)正數(shù):
var arr = [2,4,10,6,8,20]; var a = arr.sort(function(a,b){ return a-b; }); console.log(a);
操作方法 ( concat, slice, splice, copyWithin, fill )
Array.concat(arr);該方法產(chǎn)生一份 arr的潛復(fù)制,并將多個(gè)數(shù)組(也可以是字符串,或者是數(shù)組和字符串的混合)附加在其后連接為一個(gè)數(shù)組,返回連接好的新的數(shù)組。
var a = [1,2,3]; var b = ["string"]; var arr = a.concat(b); console.log(arr);
Array.slice(start,end) 截取數(shù)組 ,如果沒有 end ,則輸出 start
之后的所有元素,這里遵循數(shù)學(xué)上的思想(左閉右開),意思就是不包括 end --------[ )
var a = [1,2,3]; var b = ["string"]; var arr = a.concat(b); var arr1 = arr.slice(1, 3); console.log(arr1);
Array.splice(start,deleteCount,item...),該方法從 數(shù)組 中移除一個(gè)或多個(gè)元素,并將新的 item插入至移除元素的開始位置, 參數(shù) start 是移除元素的開始位置,deleteCount 是要移除的元素的個(gè)數(shù),item是要被插入的元素。它返回一個(gè)包含被移除元素的數(shù)組。
① 添加新的元素
var fruits = ["Banana", "Orange", "Apple", "Mango"]; //在第三個(gè)元素的位置插入新的元素 fruits.splice(2,0,"Lemon","Kiwi"); console.log(fruits);
② 刪除某個(gè)元素并添加新的元素
var fruits = ["Banana", "Orange", "Apple", "Mango"]; //先移除從第二個(gè)位置開始后面的兩個(gè)元素,并把新的元素添加到第二個(gè)位置 fruits.splice(1,2,"Lemon") console.log(fruits);
Array.copyWithin(target,start,end)
target必須有的,復(fù)制到指定目標(biāo)的索引位置(開始替換數(shù)據(jù)的位置),start可選,元素復(fù)制的起始位置,end 停止復(fù)制的索引位置,默認(rèn)為 Array.length 返回值是數(shù)組
var fruits = ["Banana", "Orange", "Apple", "Mango", "Kiwi", "Papaya"]; //復(fù)制數(shù)組的前面兩個(gè)元素到第三和第四個(gè)位置上,這里也遵循左閉右開的思想,也就是 strat=0,end=2 這樣理解 [0,2) fruits.copyWithin(2, 0, 2); console.log(fruits);
Array.fill(value,start,end)
fill()方法用于將一個(gè)固定值替換數(shù)組的元素,value是必選的,start可選,開始填充的位置,end可選,表示停止填充位置(默認(rèn)為Array.length),返回的是數(shù)組
var a = [1,2,3,4,6]; console.log(a.fill(5,2,4) );
位置方法 (indexOf, lastIndexOf, includes)
Array.indexOf(item,start)
item是必須要查找的元素,start 可選,規(guī)定在字符串中開始檢索的位置,合法取值為 0 到 array.length-1 ,如果沒有這個(gè)值,則從首字符開始查找,返回值為Number
var arr = ["Banana", "Orange", "Apple", "Mango", "Kiwi"]; var a = arr.indexOf("Orange"); console.log(a);//返回值為 1
Array.lastIndexOf(item,start)
和indexOf 類似 唯一區(qū)別就是他是倒著數(shù),strat的默認(rèn)值為 array.length-1 ,注意該方
法在比較查找項(xiàng)與數(shù)組中每一項(xiàng)時(shí),會使用全等操作符(===),也就是要求查找的項(xiàng)必須嚴(yán)格相等
var arr = ["Banana", "Orange", "Apple", "Mango", "Kiwi"]; var a = arr.lastIndexOf("Kiwi"); console.log(a);//返回值為 4
Array.includes(searchElement, fromIndex)
includes() 方法用來判斷一個(gè)數(shù)組是否包含一個(gè)指定的值,如果是返回 true,否則false.
fromIndex可選。從該索引處開始查找 searchElement。如果為負(fù)值,則按升序從 array.length +fromIndex 的索引開始搜索。默認(rèn)為 0。
var arr = ["Banana", "Orange", "Apple", "Mango", "Kiwi"]; var a = arr.includes("Apple",-2);//如果為fromIndex為負(fù)值,則數(shù)組的總長度 arr.length + fromIndex 就為當(dāng)前我們要從這個(gè)位置開始檢索的位置 console.log(a);// 返回 false
迭代方法 (every, some, filter, forEach, map, find, findIndex, entries, keys, values)
Array.every(function(currentValue,index,arr), thisValue)
這個(gè)方法用于檢索數(shù)組中所有的元素是否滿足某個(gè)條件,若滿足,則返回true ,剩余元素不用繼續(xù)檢測,否則為false
var arr = [18,16,17,20]; var a = arr.every(function(item){ return item > 18; }); console.log(a);//返回false
Array.some(function(currentValue,index,arr), thisValue)
這個(gè)方法用于檢索數(shù)組中的元素是否滿足某個(gè)條件,若有一個(gè)滿足,則返回true ,剩余元素不用繼續(xù)檢測,都不滿足返回false
var arr = [18,16,17,20]; var a = arr.some(function(item){ return item > 18; }); console.log(a);//返回 true
Array.filter(function(currentValue,index,arr), thisValue)
對數(shù)組中的每一項(xiàng)運(yùn)行給定函數(shù),返回該函數(shù)會返回 true 的項(xiàng)組成的數(shù)組
var arr = [18,16,17,20]; var a = arr.filter(function(item){ return item > 17; }); console.log(a);//返回 一個(gè)檢索過后的新數(shù)組
Array.forEach(function(currentValue, index, arr), thisValue)
對數(shù)組中的每一項(xiàng)運(yùn)行給定函數(shù),這個(gè)方法的返回值為undefined;
array.map(function(currentValue,index,arr), thisValue)
對數(shù)組中的每一項(xiàng)運(yùn)行給定函數(shù),返回每次函數(shù)調(diào)用組成的數(shù)組
var arr = [4,16,25,36]; var a = arr.map(function(item){ return Math.sqrt(item); }); console.log(a);//返回?cái)?shù)組元素的平方根
Array.find(function(currentValue, index, arr),thisValue)
該方法對數(shù)組所有成員依次執(zhí)行函數(shù),直到找出第一個(gè)返回值為 true 的成員,然后返回該成員。如果沒有符合條件的成員,則返回 undefined
var arr = [4,16,25,36]; var a = arr.find(function(item){ return item == 25; }); console.log(a);//返回查找到的該成員 25
Array.findIndex(function(currentValue, index, arr), thisValue)
該方法與 Arr.find() 類似,對數(shù)組中的成員依次執(zhí)行 函數(shù),直至找到第一個(gè)返回值為 true 的成員,然后返回該成員的索引。如果沒有符合條件的成員,則返回 -1
var arr = [4,16,25,36]; var a = arr.findIndex(function(item){ return item == 25; }); console.log(a);//返回查找到的該成員的索引值 2
Array.entries()Array.keys()
Array.values()
這三個(gè)方法都返回一個(gè)新的Array Iterator對象,可以用for...of循環(huán)進(jìn)行遍歷,區(qū)別是keys()是對鍵名的遍歷、values()是對鍵值的遍歷,entries()是對鍵值對的遍歷
歸并方法(reduce, reduceRight)
Array.reduce(function(total, currentValue, currentIndex, arr),
initialValue)
reduce() 方法接收一個(gè)函數(shù)作為累加器,數(shù)組中的每個(gè)值(從左到右)開始縮減,最終計(jì)算為一個(gè)值
var arr = [12,20,10]; var a = arr.reduce(function(total,item){ return total+item; }); console.log(a);//返回和的結(jié)果為 42
reduceRight() 方法的功能和 reduce() 功能是一樣的,不同的是 reduceRight()
從數(shù)組的末尾向前將數(shù)組中的數(shù)組項(xiàng)做累加
var arr = [12,20,10]; var a = arr.reduceRight(function(total,item){ return total+item; }); console.log(a);//返回和的結(jié)果為 42
文章版權(quán)歸作者所有,未經(jīng)允許請勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請注明本文地址:http://specialneedsforspecialkids.com/yun/52663.html
摘要:語法數(shù)組刪除數(shù)組的最后一項(xiàng)語法數(shù)組在數(shù)組的最末添加一項(xiàng)語法數(shù)組刪除數(shù)組的首項(xiàng)語法數(shù)組在數(shù)組的首部添加一項(xiàng)案例分析 1:數(shù)組的指針操作: 語法:current(數(shù)組) 當(dāng)前指針指向的單元值(默認(rèn)是第零個(gè))語法 next(數(shù)組) 當(dāng)前指針往下移動一幀語法 prev(數(shù)組) 當(dāng)前指針往前移動一個(gè)指針語法 end(array) 將當(dāng)前指針移動到最后一項(xiàng)語法 ...
摘要:設(shè)置首字母大寫算法挑戰(zhàn)返回一個(gè)字符串確保字符串的每個(gè)單詞首字母都大寫,其余部分小寫。確認(rèn)末尾字符算法檢查一個(gè)字符串是否以指定的字符串結(jié)尾。刪除數(shù)組中特定值算法挑戰(zhàn)刪除數(shù)組中的所有的假值。 在w3cschool上看到了這些初級算法題目,自己先嘗試做了一下,不會的也會查看一下別人的借鑒一下思路,更多的幫助自己熟悉字符串和數(shù)組方法的應(yīng)用.如果您有更好的解法,可以指出來還有中級算法題目和后面的...
摘要:數(shù)組元素的讀寫使用訪問數(shù)組元素時(shí),將索引轉(zhuǎn)換為字符串,然后將其作為屬性名一樣使用。第一個(gè)參數(shù)應(yīng)該在前只展開一層數(shù)組元素不變,返回注意,只拼接第一層結(jié)構(gòu)。 此乃犀牛書(第七章 數(shù)組)讀書筆記,又結(jié)合了ES6中數(shù)組的擴(kuò)展部分做的知識梳理。精華部分就是手工繪制的兩張數(shù)組總結(jié)圖了。靈活運(yùn)用數(shù)組的各種方法是基本功,是基本功,是基本功,重要的事情說三遍。好了,正文從下面開始~ 數(shù)組的基本概念 什么...
摘要:從數(shù)組索引為開始刪除元素,直到對數(shù)組元素運(yùn)用指定方法為為止。對兩個(gè)數(shù)組的元素分別調(diào)用指定方法后,返回以運(yùn)行結(jié)果為判定基準(zhǔn)的并集,并集是原始數(shù)組元素的并集而不是運(yùn)行結(jié)果的并集。 原文地址:JavaScript30秒, 從入門到放棄之Array(六)博客地址:JavaScript30秒, 從入門到放棄之Array(六) 水平有限,歡迎批評指正 tail Returns all elem...
摘要:下面這條語句將導(dǎo)致語法錯(cuò)誤變量名允許包含字母數(shù)字美元符號和下劃線但第一個(gè)字符不允許是數(shù)字。可以把一些布爾值存入一個(gè)數(shù)組,還可以把一組數(shù)值存入一個(gè)數(shù)組甚至可以把這種數(shù)據(jù)類型混在一起存入一個(gè)數(shù)組數(shù)組元素還可以是變量這將把數(shù)組的第一個(gè)元素賦值為。 執(zhí)行Javascript的方式 第一種方式是將JS代碼放到 < head > 標(biāo)簽中的 < script > 標(biāo)簽之間: ...
摘要:下面這條語句將導(dǎo)致語法錯(cuò)誤變量名允許包含字母數(shù)字美元符號和下劃線但第一個(gè)字符不允許是數(shù)字。可以把一些布爾值存入一個(gè)數(shù)組,還可以把一組數(shù)值存入一個(gè)數(shù)組甚至可以把這種數(shù)據(jù)類型混在一起存入一個(gè)數(shù)組數(shù)組元素還可以是變量這將把數(shù)組的第一個(gè)元素賦值為。 執(zhí)行Javascript的方式 第一種方式是將JS代碼放到 < head > 標(biāo)簽中的 < script > 標(biāo)簽之間: ...
閱讀 1032·2021-11-25 09:43
閱讀 1413·2021-11-18 10:02
閱讀 1814·2021-11-02 14:41
閱讀 2366·2019-08-30 15:55
閱讀 1067·2019-08-29 16:18
閱讀 2552·2019-08-29 14:15
閱讀 1390·2019-08-26 18:13
閱讀 733·2019-08-26 10:27