javascript學習筆記(數組)-2015-08

判斷數組是否爲數組

一、instanceof html

if(value instanceof Array) { }

這種方法存在的問題是:假定單一的全局執行環境。若是網頁中包含多個框架,存在兩個以上的不一樣全局執行環境,那麼存在兩個以上的不一樣版本的Array構造函數。正則表達式

若是從一個框架像另外一個框架傳入數組,那麼傳入的數組與在第二個框架中元素構建的數組分別具備不一樣的構造函數。數組

二、isArray框架

if(Array.isArray(value)){}

這是instanceof缺陷的解決方案,兼容性:IE9+, Firefox4+, safari5+, opera10.5+函數

建立數組

  • [e0, e1, e2] 字面量表示法
  • new Array(e0, e1, e2) 構造函數-元素列
  • new Array(arrayLenght) eg: new Array(3)  構造函數-數組長度
  • 正則表達式

toString(), valueOf()

 全部對象都有這兩個方法。對於數組:測試

  • toString以逗號分隔數組元素爲字符串,相似於:array.join();
  • valueOf返回的是原數組

 數組的經常使用方法

---------------mutator-----------改變數組自身--------------------this

push, pop spa

後進後出, pop返回被刪元素,push返回數組長度code

unshif, shift htm

前進前出, shift返回被刪元素,unshift返回數組長度

reverse 根據數組索引排序

根據數組索引,倒序排列

sort 根據數組元素排序 (https://developer.mozilla.org/zh-CN/docs/Web/JavaScript/Reference/Global_Objects/Array/sort)

用法 array.sort(compareFunction);

排序函數compareFunction 若是沒指明compareFunction,按照Unicode碼排序。

compareFunction(a, b) {  //比較函數參數默認爲a, b

  //返回值小於0, a排到b以前

  //返回值等於0, a, b相對位置不變

  //返回值大於0, b排到a以前

}

splice 返回被刪元素組成的數組

添加或刪除數組中的一個或多個元素.

array.splice(index, howMany, [e0, e1, ...])  array.splice(操做位置,刪多少, 加的元素)

  • 操做位置爲負數,從數組尾部開始計算
  • 若是不刪元素,howMany必須爲0
  • 加的元素不指定,則不加
var a = [1,2,3,4];
var b = a.splice(1, 2, [7,8]);

var c = [1,2,3,4];
var d = c.splice(1, 2, 7,8);

// a: [1, [7,8], 4]
// b, d: [2,3]
// c: [1,7,8,4]

--------------Accessor------------這些過程不改變數組自身-----------

concat 合併數據

array.concat(value1value2, ..., valueN) valueN能夠爲單個值,也能夠爲數組。合併的結果都同樣。

合併獲得的是一個新數組,原來的數組不變。

var num1 = [1, 2, 3];
var num2 = [4, 5, 6];
var num3 = [7, 8, 9];

// 組成新數組[1, 2, 3, 4, 5, 6, 7, 8, 9]; 原數組 num1, num2, num3 未被修改
var nums = num1.concat(num2, num3);

slice 淺拷貝 shallow copy

array.slice(begin[, end])

把數組中一部分的淺複製(shallow copy)存入一個新的數組對象中,並返回這個新的數組

  • 若是省略begin, begin爲0
  • 若是省略end, end爲數組的最後一個元素位置

indexOf 

arr.lastIndexOf(searchElement, fromIndex)

  • fromIndex默認爲第一個元素的位置, 從數組頭部開始找
  • 嚴格相等 ===

lastIndexOf 

arr.IndexOf(searchElement, fromIndex)

  • fromIndex默認爲最後一個元素的位置, 從數組末尾開始找
  • 嚴格相等 ===

join

---------------------------迭代------------------------------

  • every, forEach, some都是檢測數組是否知足某個條件
  • filter, map是改變數組元素

every 不會改變原數組

若是數組中每個元素都知足參數中提供的測試函數,則返回真,若是某個元素不知足,則返回false,當即終止循環。every 遍歷的元素範圍在第一次調用 callback 以前就已肯定了。

arr.every(callback[, thisArg]) callback被調用時傳入三個參數:元素值,元素的索引,原數組。 即:(element, index, array)

forEach

讓數組的每一項都執行一次給定的函數  array.forEach(callback[, thisArg])

沒有辦法停止 forEach 循環。

some

測試數組中的某些元素是否經過了指定函數的測試。

some 爲數組中的每個元素執行一次 callback 函數,直到找到一個使得 callback 返回一個「真值」,則返回真,當即終止循環。

filter

利用全部經過指定函數測試的元素建立一個新的數組,並返回。返回知足條件的元素構成的數組

filter 爲數組中的每一個元素調用一次 callback 函數,並利用全部使得 callback 返回「真值」(便可轉換爲布爾值 true 的值)的元素建立一個新數組。

map

返回一個由原數組中的每一個元素調用一個指定方法後的返回值組成的新數組

相關文章
相關標籤/搜索