JavaScript數組的push()等方法的使用


數組是值得有序集合。每個值在數組中有一個位置,用數字表示,叫做索引。JavaScript數組是無類型的:數組元素可以是任何類型,而且同一個數組中可以存在不同類型元素,甚至可以是對象或是其他數組,這就可以創建復雜的數據結構。JavaScript數組的索引基於2的32次方的位數值:第一個元素的索引為0,最大的索引可以是4294967294【(2)32-2】,數組最大可以容納4294967295個元素。JavaScript數組是動態的:根據需要它們會自動增長或縮減。JavaScript數組是JavaScript對象的特殊形式。

       JavaScript數組可以歸納為:一個構造函數、三個靜態方法、一個length屬性和數組實例方法。掌握着這些知識點,就可以把玩JavaScript數組了 ?

       JavaScript數組的相關知識:一個構造函數、一個擴展運算符、三個靜態方法、一個length屬性和一數組實例方法。掌握這些知識點,就可以把玩JavaScript數組了 ~_~

Array是原生JS對象,包含了三個靜態方法。同事Array也是JS數組的構造函數,Array作為數組的構造函數,語法如下:

let list = new Array(1,2,3,4);

一般是使用字面量來初始化數組:

let list = [1,2,3,4];

數組的擴展運算符,是ES6+新增的。這三個點可以使用在JS的數組和對象上,把數組或對象展開,一般是結合其他表達式一起使用。

1、使用擴展運算符實現數組的淺拷貝:

let arr = [...list]; console.log(arr) //[1,2,3,4]

2、函數快捷傳參:

//實例 let params = ['讀心',20,'前端開發工程師']; printInfo(...params); //等同於printInfo('讀心',20,'前端開發工程師') //實例 let params = [98,58,69,78,2,53]; Math.max(...params); //等同於 Math.max(98,58,69,78,2,53)

3、解構賦值:

let [leader,...apprentices] = ['趙', '錢', '李', '周', '吳', '鄭','王','馮'];

console.log(leader);

console.log(apprentices); //['錢', '李', '周', '吳', '鄭','王','馮']

4、數組合並:

let arr = [25,36,15,24,10];

let str = [0,02];

let params = [...arr,...str];

console.log(params); //[25,36,15,24,10,0,02]

三個靜態方法,一般場景中用不到。

Array.isArray():用來判斷一個變量是否為數組,

在ES5之前的寫法:

  1. var arr = ["讀心",18,"前端開發"];
  2. console.log(Object.prototype.toString.call(arr) === "[object Array]"); // true
    現在可以這樣寫:
    var arr = ["讀心",18,"前端開發"];
    console.log(Array.isArray(arrr)); // true 
    Array.from(): 把類數組轉化為數組。類數組就是包含length屬性的對象。
  1.   let str = { "0":"duxin", "1":"25", "2":"8000", length:3 }
  2.   let arr = Array.from(str);
  3.   console.log(arr); //["duxin","25","8000"]

函數中的預置變量arguments也是類數組對象

  1. function f(){ var args = Array.from(arguments);}

DOM 節點也是一個類數組對象

Array.from(document.querySelectorAll("div"))

Array.from()的第二個參數接收一個函數回調,生成數組后再進行一次map操作:

  1.   let str = { "0":"duxin", "1":"25", "2":"8000", length:3 }
  2.   Array.from(str,val=>console.log(val));
  3.   //等同於Array.from(str).map(val=>console.log(val))

Array.of():用來生成數組,與Array構造函數一樣,但是行為和字面量聲名模式一致。

  1.   let ar = Array.of("duxin",25,8000);
  2.   //等同於 let ar = ["duxin",25,8000];

數組的length屬性:length屬性代表着數組的長度,可以給length賦值,從而修改數組的長度,遵循多空少刪的原則(賦的值小於數組原來的長度,則是刪除多余的;賦值大於數組原來長度,多出的留空白)

數組實例方法:用於操作數組,可以歸類為三種類型:

1、改變當前數組變量

push():向數組的尾部添加元素(接受多的參數)

pop():從數組尾部刪除元素

unshift():向數組的頭部添加元素(接受多個參數)

shift():從頭部刪除元素

reverse():反轉數組,導致數組本身發生變化

splice(初始位置<負數時從尾部開始計數>,需要刪除的元素<可選,不設置則默認為刪到數組尾部>,插入元素<可選>,插入元素<>......)

sort():對數組進行排序,默認是字典排序(按照ASCII的順序來排序),把元素轉換成字符串形式,按位排序。sort()也可以接受一個函數,該函數安順比較前后兩個元素,如果返回的值大於0,則前者排在后者之后;否則相反。

  1.   let arr = ["duxin",28,1000];
  2.   console.log(arr.sort());//[1000,28,"duxin"];
  3.   console.log(arr.sort(function (prev,next) {
  4.   return prev-next
  5.  })) //[28,1000,"duxin" 

可以對對象元素進行排序:

  1.   let str = [{name:"duxin",age:18}, { name: "清風", age: 12 }, { name: "明月", age: 19 }];
  2.   console.log(str.sort(function(prev,next){
  3.   return prev.age-next.age;
  4.  })); //[{ name: "清風", age: 12 },{name:"duxin",age:18},{ name: "明月", age: 19 }]; 

copyWithin():把數組當前的元素復制到該數組的其他位置

arr.copyWithin(被替換的位置,復制元素的起點,復制元素的終點<可選,不設置則默認是從起點位置到數組尾部>))

fill():指定某個值來填充整個數組

 

2、生成新的返回值,對當前的變量沒有任何的影響

valueOf():返回數組本身,不是拷貝

toString():把數組展開,並且返回當前數組的字符串形式

join():指定分隔符,把數組轉化為字符串,默認分隔符為逗號

concat():合並數組,就是淺拷貝

slice():用來截取數組,數組本身不變

arr.slice(截取的起始位置<負數則從數組尾部開始計數>,截取終點位置<可選,默認是數組長度,不設置的話就是從起始位置到數組結尾>)

 

indexOf():返回指定元素第一次出現的位置下標

lastIndexOf()返回指定元素最后一次出現的位置下標

***NaN永遠返回-1

entrise():返回當前數組完整結構遍歷器

keys():返回當前數組的索引

values():返回當前數組的值

includes():搜索指定元素是否在數組中,若在,則返回true,否則返回false。第二個參數指定開始搜索的位置。

flat():拉平數組,接受一個參數表示拉平的層數,默認是一層

參數為Infinity 都拉平。

 

3、對數組做迭代遍歷操作,並且返回相應的值,迭代的入參是回調函數

map():操作數組每個元素,最終返回一個新的數組

forEach():操作數組的每個參數,沒有返回值

filter():操作數組的每個元素,每次操作的結果為true的元素插入最終返回的數組(過濾)

some():判斷當前數組中是否有符合條件的元素,沒有返回false,,否則返回true

every():判斷當前數組中是否含有所有元素都符合條件,都符合則返回true,否則返回false

reduce():對當前數組從左到右依次執行函數,最后返回最終的值

reduceRight():與reduce()相反

find():尋找第一個符合條件的元素,並且返回該元素,沒有則返回undefined

findIndex():尋找第一個反符合條件的元素返回該元素的下標。沒有則返回-1

flatMap():對原數組進行map操作,把得到的數組進行拉平,只能拉平一層。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM