JS 陣列(Arrey)屬性以及方法詳解

流年飛雪發表於2019-02-16

好久的沒寫文章了,有點愧疚啊….(面壁反省中…)。感覺不論寫的水平如何,還是先要把自己寫文章的習慣養成才行。文學能力略差,各位大佬勿噴.
陣列建立

var arr = new Array("a","b","c");

或者

var arr = new Array(10);
//建立一個長度為10  的空陣列

或者

var arr = ["a","b","c"]

目前沒發現這兩種方式有啥區別,如有大神知道,歡迎補充。
建立好訪問就可以通過陣列下標訪問了,稍微有點基礎的同學基本都知道,就不多BB了。
遍歷陣列

var arr = ["a","b","c"];
arr.forEach(function(item,index){
    console.log(item,index)
})

或者

var al = arr.length;
for(var a=0;a<al;a++){
    console.log(arr[a]);
}

兩種方式可以通過自己程式碼當時的邏輯進行選擇,各有各的優點吧。
陣列元素新增

var arr = ["a","b","c"];

新增到最後面

arr.push("d");    // ["a","b","c","d"]

新增到最前面

arr.unshift("x")  // ["x","a","b","c"];

陣列元素的刪除以及陣列的切分

var arr = ["a","b","c","d","e","f"];

刪除陣列最後一項

arr.pop();   // ["a","b","c","d","e"]

刪除陣列第一項

arr.shift();  // ["b","c","d","e","f"]

擷取陣列的一部分

// 擷取陣列的某一部分,原陣列變成擷取後剩餘的陣列,返回值為擷取的部分
arr.splice(1,4) // ["b","c","d","e"]  arr=> ["a","f"]
// 第一個引數:1  指要擷取的開始位置(下標)
// 第二個引數:4  指要擷取的長度

獲取陣列的一部分

// 原陣列不變,返回值為需要的陣列
arr.slice(1,4)    // ["b","c","d"] arr不變
// 第一個引數:1   指要獲取陣列的開始位置(下標)
// 第二個引數:4    指要獲取陣列的結束位置(下標)

複製一個陣列

var new_arr = arr.slice()    
//也可以通過轉換字串的方式 ,看個人喜好了....
var new_arr = arr.copyWithin()
// 這個方法並不常用,而且不是深度複製,當你改變new_arr後arr也會隨著改變

獲取陣列某一元素下標

arr.indexOf("b")     // 1

獲取陣列長度

arr.length            // 6

填充陣列

arr.fill("x",2,5)    //[ `a`, `b`, `x`, `x`, `x`, `f` ]
// 第一個引數:"x" 要填充的元素值
// 第二個引數為要填充的開始位置,第三個為要填充的結束位置(下標值)

顛倒陣列的順序

arr.reverse();     // [ `f`, `e`, `d`, `c`, `b`, `a` ]

陣列排序

arr.sort()        // ["a","b","c","d","e","f"]
// 預設按首字母進行排序
// 方法接受一個function引數可以自己定義安什麼排序,function返回1或者-1

合併兩個陣列

var arr1 = ["a","b","c"] var arr2 = [1,2,3]
var new_arr = arr1.concat(arr2) // [ `a`, `b`, `c`, 1, 2, 3 ]
// 合併以後返回的是一個全新的陣列改變原有的arr1或者arr2不會影響new_arr

判斷陣列是否包含某個元素

var arr. includes("b")    // true
// 後面還有一個引數 可以指定查詢的開始位置
// 這個方法並不常用而且存在相容性問題

用一個字串連線陣列元素

arr.join("-")    // `a-b-c-d-e-f`
// 常用這個方法用來吧陣列轉為字串 引數可以為空或者空字串

陣列轉為字串

arr.toString()    //`a,b,c,d,e,f`
arr.toLocaleString()    //`a,b,c,d,e,f`

陣列迭代器

var a = [`a`, `b`, `c`];
var iterator = a.entries();
console.log(iterator.next().value); // [0, `a`]
console.log(iterator.next().value); // [1, `b`]
console.log(iterator.next().value); // [2, `c`]

var arr = [`a`, , `c`];
var sparseKeys = Object.keys(arr);
var denseKeys = [...arr.keys()];
console.log(sparseKeys); // [`0`, `2`]
console.log(denseKeys);  // [0, 1, 2]
// 迭代器平時不怎麼常用,但是在某些關鍵地方有時候還是會給我們帶來很大的幫助的。

以上大概就是js中陣列的一些常見的屬性及方法了,如有遺漏歡迎各位大神及時指出補充。

相關文章