JavaScript中,由於陣列長度是可變的,因此可以透過直接定義新的成員而將其新增至陣列:
var o = [2,3,5];
o[3] = 7;
console.log(o);//[2,3,5,7]
除了這個方法,還可以透過使用push()語句來達到相同的目的:
o.push(11);
console.log(o);//[2,3,5,7,11]
o.push(13,17);
console.log(o);//[2,3,5,7,11,13,17]
如果需要在陣列開頭新增新的成員,可以使用unshift()語句:
o.unshift(2014);
console.log(o);//[2014,2,3,5,7,11,13,17]
o.unshift(2013, 2012);
console.log(o);//[2013,2012,2014, 2,3,5,7,11,13,17]
與push()對應,如果需要從陣列結尾刪除一個成員,可以使用pop()語句,pop()語句將會傳回這個被刪除的成員,而陣列長度將會減少1:
var p = o.pop();
console.log(p);//17
console.log(o.length);//9
與unshift()對應,如果需要從陣列開頭刪除一個成員,可以使用shift()語句,shift()語句將傳回這個被刪除的成員,而陣列長度將減少1:
var s = o.shift();
console.log(s);//2013
console.log(o.length);//8
除了shift()語句和pop()語句,也可以透過delete運算子來刪除陣列中的成員。與shift()和pop()不同的是,delete操作後陣列的length屬性將保持不變,也即陣列將變得不連續。
JavaScript中也可以透過設定陣列的length屬性來對陣列進行修改:當length值小於陣列成員數時,JavaScript將對陣列進行截取;當length值大於陣列成員數時,JavaScript會將陣列變得不連續。如果length值只讀,那麼在陣列中直接定義新成員的操作將會失敗:
console.log(o);//[2012,2014, 2,3,5,7,11,13]
o.length = 2;
console.log(o);//[2012,2014]
o.length = 4;
console.log(o);//[2012,2014,undefined,undefined]
var a = [1,2,3];
Object.defineProperty(a, "length", {writable:false});
a[3] = 4;
console.log(a);//[1,2,3]