Javascript數組(1)--基本屬性及常用操作方法


原文地址:http://www.cnblogs.com/hbzyin/p/7310716.html
數組Array是Javascript語言中非常重要的兩種引用類型數據之一,另外一種為對象Object。Array的數據模型可分為兩種進行存儲:堆棧結構、隊列結構。

昨天,確切說是前天了,去和大學同學見面,請了半天假,順便去參加了一個面試,結果還不知道;先說說面試中的一些Javascript相關的基本知識。雖然平時工作中也經常用到各種數組相關的方法, 但理解不夠深刻,總是容易遺忘,今天趁機再整理一下。

1.數組的基本屬性:①length、②prototype、③constructor

  • Array.length : 設置、返回數組中元素的數目;
  • Array.prototype : 設置、返回數組中原型的屬性/方法;
  • Array.constructor: 返回次對象的數組函數的引用
var arr1=new Array();  
arr1.length=3;                                         //// 1.1. 設置數組的長度
console.log(arr1); //[undefined × 3]
var arr2=[1,2,4];                                     //// 1.2.返回數組的長度
console.log(arr2.length);//3

Array.prototype.attrName="new attribute"; //// 2.1 設置數組原型的屬性
console.log(Array.attrName);//new attribute; 
Array.prototype.newFn=function(){            //// 2.2設置數組原型的方法
    return "This is a new fn of Array.prptotype.";
}
console.log(Array.newFn()); // This is a new fn of Array.prptotype.  

Array.constructor.newFunction();               ////返回創建次對象的數組函數;     

2. 數組堆棧FILO模型下方法:①push(el) 、②pop()

這兩種方法都會導致原數組產生變化,返回值為完成操作之后的數據;

var arr3=['a','b','c'];
arr3.push('d');                                      // 2.1 堆棧中從**堆棧頂部**添加一個元素--改變原數組
console.log(arr3);//["a","b","c","d"]

arr3.pop(1)                                         // 2.2 從堆棧頂部刪除數組的最后一個元素--改變原數組
consoel.log(arr3);//["a","b","c"]

3.數組隊列模型FIFO下的方法:①push(el)、②shift()、③unshift(el)

var arr4=["d","e","f"];
arr4.push("g");                                //// 3.1 在隊列末尾添加一個元素--改變原數組
console.log(arr4);//["d","e","f","g"]  
 
arr4.shift(1);                                  //// 3.2 在隊列頭部刪除一個元素--改變原數組
console.log(arr4);//["e","f","g"]

arr4.unshift("dd");                          //// 3.3 在隊列頭部添加一個元素--改變原數組
console.log(arr4);//["dd","e","f","g"]

4. 數組的排序方法:①sort()、②reverse()

這里需要說明幾點:
1. sort方法默認按照聖墟對數組進行排序,即 由小到大升序;
2. sort方法會隱式調用每個數組項的toString()方法,然后比較得到的字符串,最后進行升序排列;如:[0,1,3,10,15].sort();//[0,1,10,15,3];
3. sort方法可傳入一個用於比較函數,實際使用中常自定義比較函數function(a,b){return a-b;},若 a-b<0 升序排列;若a-b>0降序排列;a-b=0 原數組不變;
4. reverse方法--其排序方向為 降序排列數組、與sort方向相反;

var arr=[12,13,25,24,27];
arr.sort();                                              //// 4.1 sort() 默認升序排列
console.log(arr);   //[12,13,24,25,27] 
arr.reverse();                                        //// 4.2 reverse() 翻轉排序
console.log(arr);  //[27,25,24,13,12]

var arr=[1,5,13,20,25];
arr.sort();                                           ////  4.3 sort() 隱式調用toString() 方法后對元素進行比較排序
console.log(arr);  //[1,13,20,25,5]

arr.sort(function(a,b){                         ////  4.4 sort(function(a,b){return fn})   自定義比較函數
    return a-b;
});
console.log(arr);  //[1,5,13,20,25]

5. 數組位置方法: ①indexOf(el)、②lastIndexOf(el)

**說明:**此處說明一點,數組位置查找時,采用全等(===)比較進行查找
var arr=["jack","lily","lucy","lily","brown","json"];
var index1=arr.indexOf("lily");                    //// 5.1 從頭(序號0)開始查找元素 
var index2=arr.lastIndexOf("lily");              //// 5.2 從尾部(序號1)開始查找元素
var index3=arr.indexOf("xiaoming");          
console.log(index1);     // 1
console.log(index2);    // 3
console.log(index3);   // -1

6. 數組操作方法:

  • 數組合並:①concat()、②join()
var arr5=["a","b","c"];
var arr6=[1,2,3];
var res=arr5.concat(arr6);              //// 6.1.1 concat 合並兩個數組
console.log(arr5);//["a","b","c"]
console.log(arr6);//[1,2,3]
console.log(res);//["a","b","c",1,2,3]

var res6=[...arr5,...arr6];               //// ES6解構方法合並數組

var res2=arr5.join("-");               //// 6.1.2 join 連接數組元素為字符串
console.log(arr5);//["a","b","c"]
console.log(res2);//a-b-c
  • 數組復制(切分):①slice(st[,end])

關於arr.slice(start,end)方法此處說明幾點:
1. arr.slice(start,end) : 可傳入一個或者兩個參數,start 復制數組的起始位置,end數組復制結束的位置;
2. arr.slice(start,end) : 若傳入參數start>end,表示數組不進行復制,返回空數組;
3. arr.slice(start,end) : 若傳入參數start、end任意一個為負值,則實際復制時改參數值為 argValue=arr.length+該傳入值,再進行復制

var arr=[0,1,2,3,4,5,6];
var arr1=arr.slice(1);                    // 6.2.1 從指定開始位置復制數組
var arr2=arr.slice(1,3);                 // 6.2.2 從指定的開始、結束位置復制數組
var arr3=arr.slice(-2,2);              // 6.2.3 從指定位置(start+arr.length)和結束位置復制數組
  • 全能方法:splice()

關於arr.splice()說明一下幾點:
1. arr.splice(arguments)--進行操作時會對原數組造成影響
2. 可用作數組的刪除插入替換三類操作;其傳入參數有 2個、3個、4個
3. arr.splice(start,num)--從指定位置(start)開始,刪除指定個數(num)數組元素;
4. arr.splice(start,DeleteNum,newEl1)--從指定位置(start),刪除指定個數元素,並在指定位置(start)插入新元素;
5. arr.splice(start,DeleteNum,newEl1)--在指定位置(start+DeletenNum)用新元素(newEl)替換舊元素;

var names=["lily","lucy","jhon","schwts"];
var name1=names.splice(1,1);                                 //// 6.3.1 從指定位置(start),去刪除(num)個數組元素
console.log(name1);     // ["lucy"];
console.log(names);     // ["lily","jhon","schwts"]    // splice()方法會對原數組造成影響


var name2=names.splice(1,1,...["xiaoming"]);       //// 6.3.3 從指定位置插入元素
console.log(name1);     // ["lucy"];
console.log(names);     // ["lily","jhon","schwts"]  

var names=[1,2,3,4,5,6];
var name=names.splice(2,2,5);
console.log(name);     // 1,2,5,5,6;
console.log(names);     

__END


免責聲明!

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



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