摘要:數(shù)組中的元素自動前移,比慢的多。該方法接受一個返回值為布爾類型的函數(shù),對數(shù)組中得每個元素使用該函數(shù),如果對于所有的元素,該函數(shù)都返回則該方法返回。
數(shù)組的維基百科定義是:
在編程語言中,數(shù)組數(shù)據(jù)結(jié)構(gòu)(英語:array data structure),簡稱數(shù)組(英語:Array),是一種數(shù)據(jù)結(jié)構(gòu),是數(shù)據(jù)元素(elements)的集合。元素可以通過索引來任意存取,索引通常是數(shù)字,用來計算元素之間存儲位置的偏移量。
不幸的是JavaScript沒有像此類數(shù)組一樣的數(shù)據(jù)結(jié)構(gòu),但提供了一種擁有一些類數(shù)組特性的對象,它把數(shù)組下標轉(zhuǎn)變成字符串,用其作為屬性。
使用數(shù)組 1.創(chuàng)建數(shù)組var numbers = []; //[]操作符聲明了一個空的數(shù)組,長度為0。 var numbers = new Array(); //與上等價 var numbers = [1,2,3,4,5]; var numbers = new Array(1,2,3,4,5); //構(gòu)造函數(shù)傳入初始值 var numbers = new Array(5); //只傳入一個參數(shù),用來指定數(shù)組的長度 var objects = [1,"Joe",true, null]; //在 JavaScript 里數(shù)組中的元素不必是同一種數(shù)據(jù)類型。
推薦使用 [ ] 操作符創(chuàng)建數(shù)組,這種方式效率更高。
JavaScript允許數(shù)組包含任意混合類型的值
var obj = ["string", 21, true, null, undefined, ["hzzly", 21], {object: true}, NaN];2.數(shù)組長度
var arr = [1, 2, 3, 4, 5]; arr.length //5
JavaScript數(shù)組的 length 是沒有上界的
如果你用大于或等于當前 length 的數(shù)字作為下標來存儲一個元素,那么 length 值會被增大以容納新元素,不會發(fā)生數(shù)組越界錯誤。
var arr = []; arr.length //0 arr[1000] = true; arr.length //1001 //但 arr 只包含一個屬性3.由字符串生成數(shù)組
split() 方法用于把一個字符串分割成字符串數(shù)組。
var str = "hzzly"; var arr = str.split(""); console.log(arr); // ["h", "z", "z", "l", "y"]4.對數(shù)組的整體性操作
存取函數(shù) 1.indexOf()當把一個數(shù)組賦給另外一個數(shù)組時,只是為被賦值的數(shù)組增加了一個新的引用。當你通過原引用修改了數(shù)組的值,另外一個引用也會感知這個變化(淺復制)。而深復制是指將原數(shù)組中的每一個元素都復制一份到新數(shù)組中。
indexOf() 用來查找進來的參數(shù)在目標數(shù)組中是否存在。如果目標數(shù)組包含該參數(shù),就返回該元素在數(shù)組中的索引;如果不包含,就返回-1。如果數(shù)組中包含多個相同的元素,indexOf()
函數(shù)總是返回第一個與參數(shù)相同的元素的索引。lastIndexOf(),該函數(shù)返回相同元素中最后一個元素的索引,如果沒找到相同元素,則返回-1。
var arr = ["h", "z", "z", "l", "y"]; arr.indexOf("h"); //0 arr.indexOf("l") //3 arr.indexOf("z") //1 arr.lastIndexOf("z") //22.數(shù)組的字符串表示
join() 和 toString() 方法都返回一個包含數(shù)組所有元素的字符串,默認各元素之間用逗號分開。當直接對一個數(shù)組使用 print()
函數(shù)時,系統(tǒng)會自動調(diào)用數(shù)那個數(shù)組的tostring()方法。
var arr = ["h", "z", "z", "l", "y"]; arr.join() //"h,z,z,l,y" arr.toString() //"h,z,z,l,y"3.由已有數(shù)組創(chuàng)建新數(shù)組
concat() 方法可以合并多個數(shù)組創(chuàng)建一個新數(shù),concat() 方法發(fā)起者是一個數(shù)組,參數(shù)是另一個數(shù)組。作為參數(shù)的數(shù)組,其中的所有元素都被連接到調(diào)用 concat() 方法的數(shù)組后面;
splice() 方法截取一個數(shù)組的子集創(chuàng)建一個新數(shù)組;splice() 方法從現(xiàn)有數(shù)組里截取一個新數(shù)組,該方法的第一個參數(shù)是截取的起始索引,第二個參數(shù)是截取的長度。
var a = ["h","z"]; var b = ["z","l","y"]; var c = a.concat(b) //["h", "z", "z", "l", "y"] var myFish = ["angel", "clown", "mandarin", "surgeon"]; // 移除 0 個元素從下標 2, 插入 "drum" var removed = myFish.splice(2, 0, "drum"); // myFish is ["angel", "clown", "drum", "mandarin", "surgeon"] // removed is [], 沒有元素被移除 // 移除下標為 3 的元素 removed = myFish.splice(3, 1); // myFish is ["angel", "clown", "drum", "surgeon"] // removed is ["mandarin"] // 移除下標為 2 的元素, 然后插入 "trumpet" 到下標 2 removed = myFish.splice(2, 1, "trumpet"); // myFish is ["angel", "clown", "trumpet", "surgeon"] // removed is ["drum"] // 從下標為 0 開始移除兩個元素, 然后插入 "parrot", "anemone" and "blue" removed = myFish.splice(0, 2, "parrot", "anemone", "blue"); // myFish is ["parrot", "anemone", "blue", "trumpet", "surgeon"] // removed is ["angel", "clown"] // removes 2 elements from index 3 removed = myFish.splice(3, Number.MAX_VALUE); // myFish is ["parrot", "anemone", "blue"] // removed is ["trumpet", "surgeon"]可變數(shù)組 1.添加元素
push()方法會將一個元素添加到數(shù)組末尾,返回數(shù)組新長度值,也可以使用數(shù)組的length屬性為數(shù)組添加元素,但push()方法看起來更直觀。
unshift() 方法可以將元素添加在數(shù)組的開頭,也可以通過一次調(diào)用,為數(shù)組添加多個元素。
splice()方法可以為數(shù)組添加元素,需提供如下參數(shù):起始索引(亦即你希望添加元素的地方),需要刪除的元素個數(shù)(添加元素時該參數(shù)設(shè)為0),想要添加數(shù)組的元素(栗子可以看上面的)。
var arr=["h"]; arr.push("z"); //2 arr的值為["h","z"] arr.unshift("y") //3 arr的值為["y","h","z"]2.刪除元素
pop() 方法可以刪除數(shù)組末尾的元素,返回被刪除的值。
shift() 方法可以刪除數(shù)組的第一個元素,返回被刪除的值。數(shù)組中的元素自動前移,比pop慢的多。
splice() 方法可以指定要刪除的下標和個數(shù),第一個參數(shù)是下標,第一個參數(shù)是要刪除元素的個數(shù),返回值為所刪除的元素。
var arr = ["h", "z", "z", "l", "y"]; arr.pop() //返回y arr的值為["h", "z", "z", "l"] arr.shift() //返回h arr的值為["z", "z", "l"] arr.splice(1,2) //返回["z", "l"] arr的值為["z"]3.排序
reverse()方法將數(shù)組中元素的以中間位置進行翻轉(zhuǎn)。
sort() 會對數(shù)組按照字典順序進行排序。
使用sort()對數(shù)字排序,需要傳入一個大小比較函數(shù): function compare(num1,num2) { return num1 - num2; } var nums = [3,1,2,100,4,200]; nums.sort(compare); //[1, 2, 3, 4, 100, 200]迭代器方法 1.不生成新數(shù)組的迭代器方法
forEach() 該方法接受一個函數(shù)使用參數(shù),對數(shù)組中的每個元素使用該函數(shù)。
every() 該方法接受一個返回值為布爾類型的函數(shù),對數(shù)組中得每個元素使用該函數(shù),如果對于所有的元素,該函數(shù)都返回 true, 則該方法返回 true。
some() 該方法也接受一個返回值為布爾類型的函數(shù),只要有一個元素使得該函數(shù)返回true,該方法就返回 true。
reduce() 該方法接受一個函數(shù),返回一個值。該方法會從一個累加值開始,不斷對累加值和數(shù)組中的后續(xù)元素調(diào)用該函數(shù),直到數(shù)組中的最后一個元素,最后返回得到的累加值;也可以用來將數(shù)組中的元素連接成一個長的字符串。
var arr = [1,2,3,4,5] arr.forEach(function(item,index){ //讓數(shù)組中的每一項做一件事情 console.log(item,index) }) var result = arr.every(function(item,index){ //檢測數(shù)組中的每一項是否符合條件 return item > 0 }) var result = arr.some(function(item,index){ //檢測數(shù)組中是否有某些項符合條件(只有滿足一個即為true) return item > 1 }) var result = arr.every(function(pre,next){ //讓數(shù)組中的前項和后項做某種計算,并累計最終值 return pre + next })2.生成新數(shù)組的迭代器方法
map() ,和 forEach() 相似,對數(shù)組中的每個元素使用某個函數(shù),區(qū)別在于返回一個新的數(shù)組,該數(shù)組的元素是對原有元素應(yīng)用某個函數(shù)得到的結(jié)果。
filter() ,和 every() 類似,傳入一個返回值為布爾類型的函數(shù),不同的是當對數(shù)組中紅所有元素應(yīng)用該函數(shù)時,結(jié)果均為 true 時, 該方法不返回
true,二十返回一個新數(shù)組,該數(shù)組包含應(yīng)用該函數(shù)后結(jié)果為true 的元素。
var arr = [1,2,3,4,5] var newArr = arr.map(function(item,index){ //讓數(shù)組通過某種計算產(chǎn)生一個新數(shù)組 return item * 2 }) newArr => [2,4,6,8,10] var newArr2 = arr.filter(function(item,index){ //篩選出數(shù)組中符合條件的項,組成新數(shù)組 return item > 3 }) newArr2 => [4,5]二維數(shù)組和多維數(shù)組 1.創(chuàng)建二維數(shù)組
Array.matrix = function(numrows,numcols,initial) { var arr = []; for (var i = 0; i < numrows; ++i) { var columns = []; for (var j = 0; j < numcols; ++j) { columns[j] = initial; } arr[i] = columns; } return arr; }
數(shù)組 完
以上皆為個人觀點 如若有誤 還望指正
參考書籍《JavaScript語言精粹》
《JavaScript高級程序設(shè)計》
文章版權(quán)歸作者所有,未經(jīng)允許請勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請注明本文地址:http://systransis.cn/yun/86535.html
摘要:正確的解釋是允許在相等比較中進行強制類型轉(zhuǎn)換,而不允許。參考資料小議下字符串比較大小中的強制類型轉(zhuǎn)換核心概念類型轉(zhuǎn)換對象和方法隱式類型轉(zhuǎn)換小結(jié) 開胃菜 先說一個題外話,我在工作中遇到一個問題,需要比較 08:00 和 09:00 的大小,最后我找到三種方法: 在兩個字符串前后各拼接相同的年月日和秒,拼成完整的時間格式進行比較: var head = 2016-01-01 var fo...
摘要:關(guān)鍵字在中的變化非常的靈活,如果用的不好就非常惡心,用的好程序就非常的優(yōu)雅,靈活,飄逸所以掌握的用法,是每一個前端工程師必知必會的而且這個也是一些大公司筆試中常見的考察項第一種單獨的,指向的是這個對象注當前的執(zhí)行環(huán)境是所以指向了第二種全局函 this關(guān)鍵字在javascript中的變化非常的靈活,如果用的不好就非常惡心,用的好,程序就非常的優(yōu)雅,靈活,飄逸.所以掌握this的用法,是每...
摘要:博客文章鏈接數(shù)組大概知多少判斷一個變量是否為數(shù)組可靠地檢測數(shù)組方法利用的方法利用的方法數(shù)組的原生方法有哪些會改變自身的方法不會改變自身的方法遍歷方法如何將類數(shù)組的變量轉(zhuǎn)化為數(shù)組如果是,可以用方法。通常用的方法,將類似數(shù)組轉(zhuǎn)換為數(shù)組。 博客文章鏈接:數(shù)組大概知多少 判斷一個變量是否為數(shù)組? 可靠地檢測數(shù)組方法 1.利用Object的toString方法 var list = [1, 2,...
摘要:從定義函數(shù)說起如何定義函數(shù)一般來說,定義函數(shù)的方式有兩種,分別是函數(shù)聲明和函數(shù)表達式。我們聲明了一個變量,接著又定義了一個函數(shù),我們通過監(jiān)視窗口發(fā)現(xiàn)一直被定義成了一個函數(shù),顯然,函數(shù)聲明的優(yōu)先級高于變量聲明。 從定義函數(shù)說起 如何定義函數(shù)? 一般來說,定義函數(shù)的方式有兩種,分別是函數(shù)聲明和函數(shù)表達式。 //函數(shù)聲明 function foo1() { console.log(h...
閱讀 3494·2021-11-12 10:36
閱讀 2873·2021-09-22 15:35
閱讀 2823·2021-09-04 16:41
閱讀 1173·2019-08-30 15:55
閱讀 3584·2019-08-29 18:43
閱讀 2079·2019-08-23 18:24
閱讀 1424·2019-08-23 18:10
閱讀 1927·2019-08-23 11:31