push囱怕、pop霍弹、unshift、shift這四個(gè)操作都改變了原來(lái)的數(shù)組娃弓,未創(chuàng)建新數(shù)組典格。
push:向數(shù)組的尾部追加元素,直接在原來(lái)的數(shù)組尾部添加台丛,不會(huì)創(chuàng)建新數(shù)組耍缴。
var a= new Array();
var b = a.push('a');
console.log(a);// ['a']
console.log(b);// 1
pop:刪除并返回?cái)?shù)組的最后一個(gè)元素,數(shù)組長(zhǎng)度減 1挽霉,如果數(shù)組已經(jīng)為空防嗡,則 pop() 不改變數(shù)組,并返回 undefined炼吴。
var a = ['a','b','c'];
var b = a.pop();
console.log(a);// ['a','b']
console.log(b);// c
unshift:向數(shù)組的開(kāi)頭添加一個(gè)或者過(guò)個(gè)元素本鸣,并返回新的長(zhǎng)度,不會(huì)創(chuàng)建新數(shù)組硅蹦,會(huì)直接修改原數(shù)組荣德。
var a = ['a','b'];
var b = a.unshift('c');
console.log(a);// ['c','a','b']
console.log(b);// 3 返回的是修改后的數(shù)組長(zhǎng)度闷煤,并未生成新數(shù)組
shift:刪除第一個(gè)數(shù)組元素,并返回刪除的元素的值涮瞻,如果數(shù)組是空的鲤拿,不進(jìn)行任何操作,返回undefined署咽,此方法不會(huì)創(chuàng)建新數(shù)組近顷,修改原來(lái)的數(shù)組。
var a = ['a','b','c'];
var b = a.shift();
console.log(a);// ['b','c']
console.log(b);// a 返回的是刪除的數(shù)組元素
push和pop實(shí)現(xiàn)了類(lèi)似棧(LIFO last-in-first-out)的行為宁否,后進(jìn)先出窒升。
splice:往數(shù)組中添加或者刪除,返回被刪除的元素慕匠,該方法會(huì)改變?cè)瓉?lái)的數(shù)組饱须。
arr.splice(index,howmany,item1,.....,itemX)
index:必填,整數(shù)台谊,規(guī)定添加或刪除的元素位置蓉媳,使用負(fù)數(shù)可以從數(shù)組結(jié)尾處規(guī)定位置。
howmany:必填锅铅,要?jiǎng)h除的元素?cái)?shù)量酪呻,如果是0,就不刪除盐须,是添加元素玩荠。
item1,.....,itemX:可選,向數(shù)組添加的新元素丰歌。
// 向數(shù)組中添加元素
var a = ['a','b','c'];
var b = a.splice(1,0,'a1','a2');// 從下標(biāo)1開(kāi)始添加元素
console.log(a);//?["a", "a1", "a2", "b", "c"]?
console.log(b);// []
// 數(shù)組中刪除元素
var a = ['a','b','c'];
var b = a.splice(1,1);// 從下標(biāo)為1的地方姨蟋,刪除1個(gè)元素屉凯,刪除下標(biāo)為1的元素
console.log(a);//??["a", "c"]
console.log(b)立帖;//?["b"]
// 數(shù)組中替換元素
var a = ['a','b','c'];
var b = a.splice(1,1,'d');// 替換下標(biāo)為1的數(shù)組元素
console.log(a);//?["a", "d", "c"]
console.log(b);//?["b"]?
delete:數(shù)組長(zhǎng)度不變
var a = ['a','b','c'];
delete a[1];
console.log(a);//?["a", empty, "c"]