1. 程式人生 > >javascript中Array類型常用方法

javascript中Array類型常用方法

urn 字符 長度 splice ear 位置 調用 each 使用

方法總覽:

  • instanceOf
  • Array.isArray()
  • toString()
  • join()
  • push()
  • pop()
  • shift()
  • unshift()
  • splice()
  • concat()
  • slice()
  • indexOf
  • lastIndexOf
  • reverse()
  • sort()
  • forEach()
  • filter()
  • map()
  • every()
  • some()
  • reduce()
  • reduceRight()

一、檢測方法

  1. instanceof
  2. Array.isArray() (ES5 新增)
    var arr = [1,2,3,4,5,6];
    
    arr instanceof Array;	// true
    
    Array.isArray(arr);		// true

二、轉換為字符串的方法

轉換方法不改變原數組,只返回轉換後的字符串

  1. toString()
    var arr1 = [1,2,3,4,6];
    var arr2 = [‘a‘,‘b‘,‘c‘,‘d‘];
    
    arr1.toString();	// ‘1,2,3,4,5,6‘
    arr2.toString();	// ‘a,b,c,d‘
  2. join()
    /*
     *	join方法只接受一個參數,即用作分隔符的字符串,
     *	然後返回包含所有數組項的字符串
     */
    var arr = [1,2,3,4,5];
    
    arr.join(‘‘);	// ‘12345‘
    arr.join(‘-‘);	// ‘1-2-3-4-5‘

三、操作方法

1. 會改變原數組的操作方法

  • push()
    /*
     *	arr.push(arg1,arg2,arg3...)
     *	push方法接收任意數量的參數,並逐個添加到目標數組末尾,
     *	返回值為目標數組修改後的長度
     */
     var arr = [1,2,3];
     alert(arr.push(4,5));		// 5
     alert(arr);				// [1,2,3,4,5]
  • pop()
    /*
     *	arr.pop()
     *	pop方法為從目標數組末尾移除一項,並返回該移除項
     */
     var arr = [1,2,3,4,5];
     alert(arr.pop());		// 5
     alert(arr);			// [1,2,3,4]
  • shift()
     /*
      *  arr.shift()
      *	 shift方法為從目標數組開頭移除一項,並返回該移除項
      */
     var arr = [1,2,3,4,5];
     alert(arr.shift());	// 1
     alert(arr);			// [2,3,4,5]
  • unshift
     /*
      *	 arr.unshift(arg1,arg2,arg3...)
      *	 unshift方法接收任意數量的參數,並逐個添加到目標數組開頭,
      *  返回值為目標數組修改後的長度
      */
     var arr4 = [1,2,3];
     alert(arr4.unshift(4,5));	// 5
     alert(arr4);				// [4,5,1,2,3]
  • splice()
    /*
     *	Array.splice(index,howmany,arg1,arg2...);
     *	splice主要用途為向數組中插入項,方法主要為兩種:
     *	刪除:  splice(要刪除的第一項的位置,要刪除的項數)
     *  插入或替換: splice(起始位置,要刪除的項數,要插入的項數)
     *
     *	返回值為一個包含刪除項的數組
     */
     
     // 刪除
     var arr1 = [‘one‘,‘two‘,‘three‘];
     var remove = arr1.splice(1,1);
     alert(remove);		// [‘two‘]
     alert(arr1);		// [‘one‘,‘three‘]
    
     // 插入
     var arr2 = [‘one‘,‘two‘,‘three‘];
     var remove = arr2.splice(1,2,‘four‘,‘five‘);
     alert(remove);		// [‘two‘,‘three‘]
     alert(arr2);		// [‘one‘,‘four‘,‘five‘]
    
     // 替換
     var arr3 = [‘one‘,‘two‘,‘three‘];
     var remove = arr3.splice(1,1,‘four‘);
     alert(remove);		// [‘two‘]
     alert(arr3);		// [‘one‘,‘four‘,‘three‘]

2. 不會改變原數組的方法

  • concat()
    /*
     *	Array.concat(arg1,arg2,arg3...)
     *  concat方法為先創建當前數組一個副本,然後將接收的參數添加到副本末尾,
     *	最後返回該新數組
     */
     var arr = [1,2,3];
     var a = [‘one‘,‘two‘];
     var b = ‘three‘;
     var c = { name: ‘four‘};
    
     var newArr = arr.concat(a,b,c);
     alert(newArr);	// [1,2,3,‘one‘,‘three‘,{name:‘four‘}]
  • slice()
    /*
     *	Array.slice(start,end)
     *	slice方法為截取數組,返回截取項組成的新數組
     *	slice 為一個參數時,截取該參數指定的開始項到數組的末尾
     *	slice 為兩個參數時,截取參數指定的起始和結束項,但不包括結束項(包左不包右)
     */
     var arr = [1,2,3,4,5,6,7,8,9];
    
     var sliceArr1 = arr.slice(3);		// [4,5,6,7,8,9]
     var sliceArr2 = arr.slice(3,5);	// [4,5]
     var sliceArr3 = arr.slice(3,-1);	// [4,5,6,7,8]
     var sliceArr4 = arr.slice(-3,-1);	// [7,8]
     var sliceArr5 = arr.slice(-1,-3);	// []
  • indexOf() 與 lastIndexOf()
    /*
     *	indexOf(value,start),lastIndexOf(value,start)
     *	兩方法都為數組查找方法,查找目標項成功則返回數組該值的索引,
     *	查找失敗則返回-1
     *  第一個參數為要查找的目標值,第二個參數查找的起始位置
     *	indexOf 為正序查找  
     *  lastIndexOf 為逆序查找
     */
     var arr = [‘one‘,‘two‘,‘two‘,‘three‘,‘four‘,‘four‘,‘five‘];
     
     var index1 = arr.indexOf(‘two‘);		  // 1
     var index2 = arr.indexOf(‘two‘,2);		  // 2
     var index3 = arr.lastIndexOf(‘four‘);	  // 5
     var index4 = arr.lastIndexOf(‘four‘,4);  // 4

四、排序方法

排序方法會改變原數組

  1. reverse()
    /*
     *  Array.reverse()
     *	翻轉數組項的順序
     *
     */
     var arr = [1,2,3,4,5];
    
     arr.reverse();
     alert(arr);	// [5,4,3,2,1]
  2. sort()
    /*
     *	Array.sort(callback)
     *	sort為數組的排序方法,默認按數組每一項進行toString()後的結果進行
     *  升序排序
     *  sort接收一個回調函數為參數,回調函數有兩個參數,代表數組的前一項和
     *  後一項,如果第一個參數應該位於第二個之前則返回一個負數,如果兩個參數相等
     *  則返回 0,如果第一個參數應該位於第二個之後則返回一個正數
     */
     var arr1 = [2,1,4,3,5];
     var arr2 = [1,50,10,500,100,1000];
    
     arr1.sort();
     arr2.sort();
     alert(arr1);	// [1,2,3,4,5]
     alert(arr2);	// [1,10,100,1000,50,500]
    
     arr2.sort(function(pre,next) {
     	if(pre < next) {
     		return -1;
     	}else if(pre === next) {
     		return 0;
     	}else {
     		return 1;
     	}
     });
     alert(arr2);	// [1,10,50,100,500,1000]

五、叠代方法(ES5)

數組的叠代方法都接收一個回調函數,這個回調函數會在數組的每一項上運行,回調函數接收三個參數:數組項的值,數組項的索引,數組對象本身。

  1. forEach():對數組中的每一項運行給定函數。沒有返回值。
    var arr = [‘one‘,‘two‘,‘three‘];
    arr.forEach(function(item,index,thisArr) {
    	// 叠代的item 為arr 每一項的值
    	// 叠代的index 為arr 每一項的索引
    	// thisArr 為 數組arr
    });
  2. filter():對數組的每一項運行給定函數, 返回該函數會返回 true 的項組成的數組。
    var arr = [1,2,3,4,5,6,7];
    var filterArr = arr.filter(function(item,index,thisArr) {
    	return item > 4;
    });
    alert(filterArr);	// [5,6,7]
  3. map(): 對數組中的每一項運行給定函數,返回每次函數調用的結果組成的數組。
    var arr = [1,2,3,4,5,6,7];
    var mapArr = arr.map(function(item,index,thisArr) {
    	return item + 10;
    });
    alert(mapArr);	// [11,12,13,14,15,16,17]
  4. every(): 對數組中的每一項運行給定函數,如果該函數對每一項都返回 true,則返回 true。
    var arr = [1,2,3,4,5,6,7];
    
    var every1 = arr.every(function(item,index,thisArr) {
    	// 對數組每一項與4進行比較
    	return item > 4;
    });
    alert(every1);	// false
    
    var every2 = arr.every(function(item,index,thisArr) {
    	// 對數組每一項與8進行比較
    	return item < 8;
    });
    alert(every2);	// true
  5. some(): 對數組中的每一項運行給定函數,如果該函數對任一項返回 true,則返回 true。
    var arr = [1,2,3,4,5,6,7];
    
    var some = arr.some(function(item,index,thisArr) {
    	// 對數組每一項與4進行比較,只要有一項大於4,就返回true
    	return item > 4;
    });
    alert(some);  	// true
  6. reduce(),reduceRight(): 叠代數組的所有項,然後構建一個最終返回的值, 傳給 reduce()和 reduceRight()的函數接收 4 個參數:前一個值、當前值、項的索引和數組對象。這個函數返回的任何值都會作為第一個參數自動傳給下一項。
    var arr = [1,2,3,4,5];
    
    // 使用reduce進行數組求和操作
    var sum = arr.reduce(function(pre,current,index,thisArr) {
    	return pre + current;
    });
    
    // reduceRight 則從相反方向,即從右向左叠代,結果一致
    alert(sum);		// 15

javascript中Array類型常用方法