《javascript權威指南》學習筆記 第七章 數組

7數組

數組索引僅僅是對象屬性名的一種特殊類型函數

a=new Array()this

[]es5

a[-3.15]="i m -3.15"spa

"i m -3.15"prototype

a對象

[]排序

a[-3.15]索引

"i m -3.15"ip

a['-3.15']

"i m -3.15"

a[3]=function(){ console.log('this is a function!') }

function (){ console.log('this is a function!') }

a[3]

function (){ console.log('this is a function!') }

a[3]()

this is a function!

a['3']()


7.3 稀疏數組 就是包含從0開始的不連續索引的數組。若是是稀疏數組,length屬性值大於元素的個數。能夠用Array()構造函數或簡單的指定數組的索引值大於當前數組長度來建立稀疏數組


7.4 數組長度

數組建立後 設置數組長度 將會刪除 或增長相應的元素

a = [1,2,3,4,5];

a.length = 3; //a 爲 [1,2,3]


能夠用Object.defineProperty()讓數組的length屬性變成只讀,將會禁止改變數組長度

a = [1,2,3];

Object.defineProperty(a,'length',{writable:false});

a.length=0; //a 不會改變

7.6 數組遍歷

for()


data.foreach()

data.forEach(function(x){

console.log(x)

});


7.7 多維數組

Javascript不支持真正的多維數組,能夠用數組的數組來近似。只要簡單的使用兩次[]操做符便可。

a=[];a[1]=[];


7.8 數組方法

Array.join() 方式將數組的全部元素轉化爲字符串鏈接在一塊兒,返回生成後的字符串

var a=[1,2,3];

a.join() // '1,2,3'

a.join('') // '123'

a.join(' ')// '1 2 3'

a.join('-')// '1-2-3'


Array.reverse() 返回逆序數組


sort 以字母表順序排序返回


concat() 鏈接自己和參數 若是參數是數組將鏈接數組


slice() 返回定義的數組的位置 -1表明最後一個元素


splice() 插入或刪除元素 


第一個參數表明從第幾個元素開始,第二個參數表明刪除幾個  隨後的是指定插入到數組中的元素  返回刪除的元素 元素自己發生改變


var a = [1,2,3,4];

b = a.splice(2,1,'a','b');

//b = [3]

//a=[1, 2, "a", "b", 4]


push 把元素添加到數組最後並返回數組的新長度

pop 刪除元素最後一個元素並返回被刪除的值


unshift 在數組的開頭插入新元素 並返回新長度

shift 刪除數組的第一個元素並將刪除的值返回


toString 和join 不使用參數同樣

toLocaleString 不懂


forEach 從頭至尾遍歷數組,爲每一個元素調用指定函數 沒法終止便利


map 將調用每個元素傳給指定的函數並返回一個數組 若是是稀疏數組 也會是相同方式的稀疏數組


filter 返回的數組元素是調用的數組的一個本身  傳遞的函數是用來邏輯判斷的 若是返回值爲true或能轉化爲true的值 那麼傳遞給斷定函數的元素就是這個本身的成員

var a = [1,2,3,4,5,6];

a.filter(function(x){return x < 3})  // [1,2]


filter 會跳過稀疏數組中缺乏的元素 返回老是稠密的 能夠用它來壓縮稀疏數組 a.filter(function(x){return true})  


every 和 some 將元素應用指定的函數進行斷定 返回布爾值 

every 調用斷定函數 當全部元素傳遞給斷定函數返回true 它纔會返回true

some  當有函數返回true 它返回出  全部函數返回false 則會返回false


reduce reduceRight 使用指定的函數將數組進行組合 生成單個值


var a= [1,2,3,4,5]

var sum = a.reduce(function(x,y){return x+y},0)

若是不設定第二個參數 那麼 傳入指定函數的前兩個參數將是數組的前兩個元素的值


reduceRight 和reduce工做原理同樣 不一樣的是從數組索引的高到低處理數組


indexOf 全部真格數組中具備給定值的元素 返回找到的第一個元素的索引 第二個參數可選 是從數組中這個索引開始 沒有找到返回-1 indexOf從頭至尾 lastIndexOf 從後到前

找出全部匹配的元素的索引


function findall(a,x){

var results = [];

len = a.length,

pos = 0;

while(pos < len){

pos = a.indexOf(x,pos);

if (pos === -1) break;

results.push(pos);

pos = pos + 1;

}

return results;

}

7.1 數組類型

在 es5中能夠這麼寫 

Array.isArray();


instanceof Array 不可靠


var isArray = Function.isArray || function(o){

return typeof o === 'object' &&

Object.prototype.toString.call(o) === '[object Array]';

};



7.12 做爲數組的字符串


var s = 'test';

s.charAt(0);

s[1];

相關文章
相關標籤/搜索