1、push()、pop()和unshift()、shift()
這兩組同為對(duì)數(shù)組的操作,并且會(huì)改變數(shù)組的本身的長(zhǎng)度及內(nèi)容。
不同的是 push()、pop() 是從數(shù)組的尾部進(jìn)行增減,unshift()、shift() 是從數(shù)組的頭部進(jìn)行增減。
var arr = [1, 2];
2、push()和unshift()
向數(shù)組的 尾部/頭部 添加若干元素,并返回 數(shù)組的 新長(zhǎng)度;
arr.push(3,4); //返回 arr 的新長(zhǎng)度 4
arr ; // arr = [1,2,3,4];
arr.unshift(0,0.5); // 返回 arr 的新長(zhǎng)度 6
arr ; // arr = [0,0.5,1,2,3,4];
3、pop()和shift()
從數(shù)組的 尾部/頭部 刪除1個(gè)元素(刪且只刪除1個(gè)),并返回 被刪除的元素;空數(shù)組是繼續(xù)刪除,不報(bào)錯(cuò),但返回undefined;
arr.pop(); //返回 4;
arr ; // arr = [0,0.5,1,2,3];
arr.pop(); //返回 3;
arr ; // arr = [0,0.5,1,2];
arr.shift(); // 返回 0 ;
arr ; // arr = [0.5,1,2]
PS: pop()和shift() 不接受傳參,即使傳了參數(shù)也沒(méi)什么卵用~~;
arr.pop(3) ; // 返回 2;永遠(yuǎn)返回最后一個(gè);
arr ; // arr = [0.5,1];
arr.shift(1); // 返回 0.5; 永遠(yuǎn)返回第一個(gè);
arr ; // arr = [1];
arr.pop() ; // 返回 1;
arr ; // arr = [];
arr.shift() // 返回 undefined;
arr ; // arr = [];
在學(xué)習(xí)js的過(guò)程中,碰到這樣一個(gè)問(wèn)題:
var colors=new Array();
var count=colors.unshift("red","green"); //推入多個(gè)項(xiàng)
count=colors.unshift("black"); //推入單個(gè)項(xiàng)
var item=colors.pop(); //移除
alert(item); //''green''
我的問(wèn)題是:為什么移除的是 green而不是red 呢?本人仔細(xì)又回去看了一下數(shù)據(jù)結(jié)構(gòu),了解下面概念就不難理解了;
1、push()是用來(lái)在數(shù)組末端添加項(xiàng),shift()在移除數(shù)組的第一個(gè)項(xiàng)(前端);
2、pop()在數(shù)組末端移除項(xiàng),unshift()在數(shù)組前端添加項(xiàng);
3、push(),unshift()在推入多個(gè)項(xiàng)時(shí),各個(gè)項(xiàng)之間的順序不變
4、push(),unshift()將數(shù)組的長(zhǎng)度+1并返回的是數(shù)組的長(zhǎng)度,pop(),shift()將數(shù)組length-1并返回的是移除的項(xiàng)
例如:
var num=new Array();
num.push("1","2","3"); //推入項(xiàng) 數(shù)組呈現(xiàn)為①②③
console.log(num.shift());//移除①項(xiàng),數(shù)組呈現(xiàn)為②③
num.unshift(''4''); //在前端添加項(xiàng),數(shù)組呈現(xiàn)為④②③
num.push("5"); //在末端添加項(xiàng),數(shù)組呈現(xiàn)為④②③⑤
console.log(num.shift());//移除數(shù)組的第一個(gè)項(xiàng),驗(yàn)證得到④
num.unshift("6","7","8"); //注意這里,以及下一句 數(shù)組呈現(xiàn)為⑥⑦⑧②③⑤
num.push("9","10"); //數(shù)組呈現(xiàn)為⑥⑦⑧②③⑤⑨⑩
如對(duì)本文有疑問(wèn),請(qǐng)?zhí)峤坏浇涣髡搲?,廣大熱心網(wǎng)友會(huì)為你解答??! 點(diǎn)擊進(jìn)入論壇