JavaScript數組(上)

數組篇

定義方式

  • 經過構造函數,new一個array,能夠填寫參數,通常除數字外不建議填
let arr = new Array();
let arr1 = new Array(3);  //表明length爲3,鍵值都是空位
0 in arr1;                //false,由於是空位,因此不存在索引,數組會忽略尾部逗號
  • 經過字面量定義
let arr = [1,2,3,4,5,56]

數組類型斷定

  • typeof,不建議,最客觀也只返回object
let arr = [1,2];
typeof arr        //object
  • instanceof,不是最佳,緣由是instanceof的原理是經過原型鏈判斷兩邊是否相等,可是在多框架下,a框架下的數組原型在b框架下就不必定了
arr instanceof Array;    //true
a instanceof b;     
//a.__proto__.proto__.... === b.prototype;a一般爲對象,b爲構造函數
  • Array.isArray(),能解決第二種的問題
Array.isArray(arr);     //true

數組屬性-length

  • 增長數組長度
let arr = [1,2,3];
arr.length = 4;
3 in arr;            //false
arr[3] = undefined;  //能增長length值,鍵值爲undefined
3 in arr;            //true,
  • 減小數組長度
let arr = [1,2,3];
arr.length = 2;
console.log(arr[2]);    //undefined
arr.length = 0;        //最簡單的清空方式,[]

數組方法

  • valueof(),toString(),一般用於數組對象轉換成別的數據類型,arr.valueof().toString()
  • push,pop,shift,unshift,4種方法都能改變原數組,前兩個速度快,由於檢索位置是尾部,後二者是首部。能夠模仿棧和隊的進入方式:

隊先進先出:數組

let arr = [];
arr.push(1);
arr.push(2);   //[1,2]
arr.shift()    //[2]

隊後進後出:框架

let arr = [];
arr.unshift(1);
arr.unshift(2);   //[2,1]
arr.pop();        //[2]

棧後進先出:函數

let arr = [];
arr.unshift(1);
arr.unshift(2);     //[2,1]
arr.shift();        //[1]

棧先進後出:prototype

let arr = [];
arr.push(1);
arr.push(2);         //[1,2]
arr.pop();           //[1]
  • join(),將數組以特定字符串鏈接,並返回字符串,默認以逗號鏈接。如數組成員爲空位,undefined或null,這三者將以空串代替。
let arr = [,undefined,null];
arr.join(";");   //;;
let arr1 = [1,,2];
arr1.join(".");  //1..2
  • concat(),將括號內參數與原數組進行拼接,返回新數組,原數組不變,參數類型不固定個數不固定。是淺拷貝,如參數爲對象拷貝的是索引。
let arr = [1];
let obj = {a: 2};
let new_arr = arr.concat("123",obj); 
obj.a = 3;
console.log(new_arr);         //[1, "123", {a: 3}]
  • sort(), reverse(),改變原數組排列方式(會改變原數組),進行升序和降序。它是先將元素轉爲字符串,按首個字符的u碼進行排列,這就致使排列出錯。sort()能夠添加傳入一個函數做爲參數,將排序進行改進
let arr = [1, 2, 12, 3, 4];
arr.sort();             //[1, 12, 2, 3, 4]
let arr = [1, 2, 12, 3, 4];
arr.sort(function (a, b) {
    return a - b;     //<0,在前;>0,在後;=0不變;
});
console.log(arr);    //[1, 2, 3, 4, 12],
  • slice()與splice(),
    slice(start, end),相似切片截取,返回截取的新數組,原數組不變,兩個參數前閉後開,是淺拷貝
    splice(start, count, addElement1, addElement2, ...),從start開始刪除,數量爲count,接着添加後面的元素; 若填寫一個參數則 count默認length-arg-1,即刪到末尾;返回被刪除的數組,原數組改變
let arr = [1, 2, 3, 4, 5];
arr.slice();             //[1, 2, 3, 4, 5]
arr.slice(1, -1);        //[2, 3, 4]
arr.slice(0, 5);         //[1, 2, 3, 4, 5]  
arr.slice(2, 1);         //error, 前者不能大於後者(同+-符號)
let arr = [1, 2, 3, 4];
let del = arr.splice(1, 3, "345", 67);
console.log(arr);                //[1, "345", 67]
console.log(del);                //[2, 3, 4]
let arr1 = [1, 2, 3, 4, 5];
arr1.splice(1);
console.log(arr1);               //[1]
相關文章
相關標籤/搜索