push()函數用於向當前數組的添加一個或多個元素,並返回新的數組長度。新的元素將會依次添加到數組的末尾。
該函數屬於Array對象,所有主流瀏覽器均支持該函數。
語法
array.push( item1 [,items... ] )
參數
參數 描述
item1 任意類型添加到當前數組末尾處的元素。
items 可選參數/任意類型要添加到當前數組末尾處的其他項,可以有多個。
注意:如果添加的元素類型為數組類型(Array),仍然會被當作一個元素看待,只是這個元素是數組類型而已。如果要合並兩個數組,請使用concat()函數。
返回值
push()函數的返回值為
返回添加元素后的數組長度。
當向數組中添加新的元素時,數組的length屬性也會隨之改變。一般而言,數組的length屬性將會加N(N為添加的元素個數)。
示例&說明
// 定義一個數組對象
var array = ["CodePlayer", true];
document.writeln(array.length); // 2
// 向數組中添加一個元素
var newLength = array.push("http://www.365mini.com");
document.writeln(array); // CodePlayer,true,http://www.365mini.com
document.writeln(newLength); // 3
// 一次性添加多個元素
newLength = array.push(2, 3, "Hello");
document.writeln(array); // CodePlayer,true,http://www.365mini.com,2,3,Hello
document.writeln(newLength); // 6
// 數組也會被當作其中的一個元素進行添加
newLength = array.push(false, [15, 12]);
// 輸出內容最后面的"15,12"是一個元素的輸出,只不過該元素是數組
document.writeln(array); // CodePlayer,true,http://www.365mini.com,2,3,Hello,false,15,12
document.writeln(newLength); // 8
運行代碼
js中針對數組操作的方法還是比較多的,今天突然想到來總結一下,也算是溫故而知新吧。不過不會針對每個方法進行講解,我只是選擇其中的一些來講,感興趣的朋友可以研究一下
js中針對數組操作的方法還是比較多的,今天突然想到來總結一下,也算是溫故而知新吧。不過不會針對每個方法進行講解,我只是選擇其中的一些來講。
首先來講一下push和pop方法,這兩個方法只會對數組從尾部進行壓入或彈出,而且是在原數組進行操作,任何的改動都是會影響到操作的數組。push(args)可以每次壓入多個元素,並返回更新后的數組長度。pop()函數每次只會彈出最后一個結尾的元素,並返回彈出的元素,如果是對空組數調用pop()則返回undefined。 如果參數是數組則是將整個數組當做一個元素壓入到原來的數組當中。並不會產生類似concat合並數組時產生的“拆分現象”,下面看例子
例1:
var oldArr=[1,2,3];
alert(oldArr.push(4,[5,6]))–>5(這里只會將[5,6]當做一個元素來計算,返回更新后的數組長度5)
此時oldArr–>[1,2,3,4,[5,6]]
alert(oldArr.pop())–>[5,6](這里彈出最后一個元素[5,6],而不是6)
此時oldArr–>[1,2,3,4]
oldArr.pop()–>4
oldArr.pop()–>3
oldArr.pop()–>2
oldArr.pop()–>1
oldArr.pop()–>undefined(空數組彈出)
現在講完push和pop再來看一下unshift和shift
這兩個方法都是通過對數組的頭部進行的操作,其他基本跟push和pop類似,但是在IE中unshift方法返回的是undefined
例2:
var oldArr2=[1,2];
oldArr2.unshift(3)–>undefined
此時oldArr2為–>[3,1,2]
oldArr2.shift()–>3
此時oldArr2為[1,2]
接下來看一下功能強大一點的splice,利用其可以進行數組隨意位置的元素添加,刪除 ,其操作也是在原有
數組上修改
splice(start,deleteCnt,args) 中的start表示開始操作下標,deleteCnt表示從開始下標開始(包括該元素)要刪除的元素個數,刪除操作返回刪除的元素。args表示用來替換刪除掉的那些元素(可以有多個參數),start和deleteCnt必須為數字,如果不是數字嘗試轉換,轉換失敗當做0來處理。splice必須至少有一個start元素,否則不做任何操作。deleteCnt不存在表示刪除start及后面的全部元素(IE下,取0不做刪除)。start可以為負數,表示從數組右邊結尾處開始計算。deleteCnt如果為負數不做刪除,因為不可能刪除負個元素。
好了解釋就到這邊現在看一下例子,通過例子或許可以更好的理解
例3:
var oldArr3=[1,2];
oldArr3.splice()–>”"(返回空的字符串,不做任何操作,操作后oldArr3–>[1,2])
oldArr3.splice(“”)–>[1,2](“”嘗試轉換為數字失敗返回0,所以刪除1,2,操作后oldArr3–>[],但是IE下有點惡心,不做任何操作)
oldArr3.splice(“1a”)–>同上
odlArr3.splice(0,2)–>[1,2](“從下標0的元素開始,刪除兩個元素1,2因此刪除后oldArr3–>[])
oldArr3.splice(0,-1)–>”"(從0下標開始刪除-1個元素,故等於沒做任何操作,操作后oldArr3–>[1,2])
oldArr3.splice(1,1)–>2(從下標1 開始刪除1個元素,即刪除2,所以刪除后oldArr3–>[1])
oldArr3.splice(1,4)–>2(從下標1 開始刪除4個元素,1開始只有1個元素,故刪除2,所以刪除后oldArr3–>[1])
oldArr3.splice(-1,0,3)–>”"(從下標-1即2元素開始刪除0個元素,然后添加元素3,所以操作后oldArr3–>[1,3,2])
oldArr3.splice(-1,1,3)–>2(從小標-1即2元素開始刪除1個元素,然后添加元素3,操作后為oldArr3–>[1,3])
OK接下來開始講concat,這個方法用來連接兩個或多個數組,該數組不會改變原來的數組只會返回新的一個數組。連接的時候參數如果為數組,則連接的是數組中的元素。因為比較簡單直接開始例子
多少錢
一個月多少
y王
mc
628
快
例4:
var oldArr4=[1,2];
oldArr4.concat(3,4)–>[1,2,3,4]
oldArr4.concat(3,4,[5,6])–>[1,2,3,4,5,6](這邊添加的是[5,6]中的元素5和元素6)
oldArr4.concat(3,[4,[5,6]])–>[1,2,3,4,[5,6]](這邊最里層的元素[5,6]整個用來添加,而不是拆開)
下面來講數組中的排序方法sort
sort(function)是針對原數組進行的排序,不會生成新的數組。默認sort()不帶參數時按照數組中的元素轉換成字符串進行比較,比較的時候按照字符在字符編碼中的順序進行排序,每個字符都有一個唯一的編碼與其對應。
且看下面例子
var oldArr5=[3,1,5,7,17] 看這個一般觀念上以為對oldArr5排序時oldArr5.sort()會按照數字從小到大排序即返回[1,3,5,7,17],但是看一下結果其實不然返回的是[1,17,3,5,7] 因為比較的時候都被轉成字符串。然后對字符串進行一個個的比較如果第一個字符相同則比較第二個,否則直接返回比較結果,因為”17″<”3″所以可想而知排序的結果就不是一般印象中的那個結果了。
sort(function)方法除了默認的無參外還可以傳入自定義的排序方法,這樣排序的結果完全可以由自己來控制了,想怎么排就怎么排,是不是很爽啊,呵呵。 一般自定義的function比較函數,包含兩個參數分別代表用來比較的左元素和右元素。然后通過一定方式返回一個結果,如果返回值大於0表示交換左右元素,如果返回值小於0或等於0則表示不不會交換左右元素。現在來看一下例子
例5:
按照數字從大到小排列原有數組
復制代碼代碼如下:
var oldArr5=[3,1,5,7,17]; //初始數組
function mySort(left,right){
if(left<right){
return 1;}//如果左邊元素小於右邊元素則交換兩數
else{
return -1;}//如果左邊元素大於等於右邊元素不做交換
}
當然上面的方法可以簡化為funaction mySort(left,right){ return right-left;}
復制代碼代碼如下:
//按照偶數在前奇數在后排序
var oldArr6=[3,6,7,18];//初始數組
function mySort2(left,right){
if(left%2==0)return -1;//如果左邊元素為偶數則不交換
if(right%2==0)return 1; //如果右邊元素為偶數則交換
return 0; //不交換
}
最后的slice不多講,只是用來截取原數組中的部分元素,返回一個新的數組,原數組不會改變,其操作方式跟string的slice類似
復制代碼代碼如下:
var oldArr7=[1,2,3,4];
oldArr7.slice(0)–>[1,2,3,4]
oldArr7.slice(0,2)–>[1,2]
oldArr7.slice(0,0)–>[]
oldArr7.slice(0,-1)–>[1,2,3]
oldArr7.slice(-3,-1)–>[2,3]
oldArr4.slice(-1,-3)–[]
Js數組的操作push,pop,shift,unshift等方法詳細介紹
JavaScript Array 對象
Array 對象
Array 對象用於在單個的變量中存儲多個值。
創建 Array 對象的語法:
new Array();
new Array(size);
new Array(element0, element1, ..., elementn);
參數
參數 size 是期望的數組元素個數。返回的數組,length 字段將被設為 size 的值。
參數 element ..., elementn 是參數列表。當使用這些參數來調用構造函數 Array() 時,新創建的數組的元素就會被初始化為這些值。它的 length 字段也會被設置為參數的個數。
返回值
返回新創建並被初始化了的數組。
如果調用構造函數 Array() 時沒有使用參數,那么返回的數組為空,length 字段為 0。
當調用構造函數時只傳遞給它一個數字參數,該構造函數將返回具有指定個數、元素為 undefined 的數組。
當其他參數調用 Array() 時,該構造函數將用參數指定的值初始化數組。
當把構造函數作為函數調用,不使用 new 運算符時,它的行為與使用 new 運算符調用它時的行為完全一樣。
Array 對象屬性
屬性 描述
constructor 返回對創建此對象的數組函數的引用。
length 設置或返回數組中元素的數目。
prototype 使您有能力向對象添加屬性和方法。
Array 對象方法
方法 描述
concat() 連接兩個或更多的數組,並返回結果。
join() 把數組的所有元素放入一個字符串。元素通過指定的分隔符進行分隔。
pop() 刪除並返回數組的最后一個元素
push() 向數組的末尾添加一個或更多元素,並返回新的長度。
reverse() 顛倒數組中元素的順序。
shift() 刪除並返回數組的第一個元素
slice() 從某個已有的數組返回選定的元素
sort() 對數組的元素進行排序
splice() 刪除元素,並向數組添加新元素。
toSource() 返回該對象的源代碼。
toString() 把數組轉換為字符串,並返回結果。
toLocaleString() 把數組轉換為本地數組,並返回結果。
unshift() 向數組的開頭添加一個或更多元素,並返回新的長度。
valueOf() 返回數組對象的原始值
JavaScript數組函數unshift、shift、pop、push使用實例
投稿:junjie 字體:[增加 減小] 類型:轉載 時間:2014-08-27 我要評論
這篇文章主要介紹了JavaScript數組函數unshift、shift、pop、push使用實例,本文先是講解了聲明數組的方法,然后對4個函數使用給出了一些例子,需要的朋友可以參考下
如何聲明數組
s中數組的聲明可以有幾種方式聲明
復制代碼 代碼如下:
var tmp = []; // 簡寫模式
var tmp = new Array(); // 直接new一個
var tmp = Array(); // 或者new也可以
在new數組的時候可以傳入一個參數,表示數組的初始化長度
復制代碼 代碼如下:
// new的時候傳入一個參數表示初始化數組長度
var tmp = new Array(3);
alert(tmp.length); // 3
但如果你想創建一個只有一個元素3的數組,那么使用 new 方法是不能實現的,因為系統會把你傳入的3當作數組的長度,除非你使用引號引起來當作字符串,如
復制代碼 代碼如下:
var tmp = new Array('3');
alert(tmp); // 3
我們可以使用簡寫模式創建數組,這樣就可以創建只有一個數字元素3的數組
復制代碼 代碼如下:
var tmp = [3]
alert(typeof tmp[0]); // number
也可以初始多個元素,並且元素的值可以是任意類型
復制代碼 代碼如下:
// 簡約模式創建數組
// 數組的元素可以是任意一種數據類型
var tmp = [3,true,8.5,{'name':'lizhong'},['a','b']];
alert(tmp.length); // 5
一、unshift 在數組第一個元素前插入元素
復制代碼 代碼如下:
// 使用unshift在數組第一個元素前插入元素
// 返回數組長度
var tmp = ['a','b'];
var len = tmp.unshift('c');
alert(len); // 3
alert(tmp); // c,a,b
也可以一次插入多個元素,順序依次從左邊排起
復制代碼 代碼如下:
// 使用unshift在數組第一個元素前插入元素
// 返回數組長度
var tmp = ['a','b'];
var len = tmp.unshift('c','d');
alert(len); // 4
alert(tmp); // c,d,a,b
二、shift彈出數組第一個元素,返回被彈出的元素值
小實例:
復制代碼 代碼如下:
// 使用shift彈出數組第一個元素
// 返回被彈出的元素值
var tmp = ['a','b','c'];
var val = tmp.shift();
alert(val); // a
alert(tmp); // b,c
如果是一個空數組:
復制代碼 代碼如下:
// 使用shift彈出數組第一個元素
// 返回被彈出的元素值
var tmp = [];
var val = tmp.shift();
alert(val); // undefined
alert(tmp); // 空
三、push在數組末尾添加元素
跟unshift相反,push在數組末尾添加元素,返回添加元素以后的數組長度
復制代碼 代碼如下:
// 使用push在數組末尾添加多個元素
// 返回數組最新長度
var tmp = ['a','b','c'];
var len = tmp.push('d');
alert(len); // 4
alert(tmp); // a,b,c,d
也可以一次添加多個元素
復制代碼 代碼如下:
// 使用push在數組末尾添加多個元素
// 返回數組最新長度
var tmp = ['a','b','c'];
var len = tmp.push('d','e','f');
alert(len); // 6
alert(tmp); // a,b,c,d,e,f
四、pop函數刪除數組末尾元素
跟shift相反,pop彈出的是數組末尾元素,返回被彈出的元素值
復制代碼 代碼如下:
// 使用pop彈出數組末尾元素
// 返回被彈出的元素值
var tmp = ['a','b','c'];
var val = tmp.pop();
alert(val); // c
alert(tmp); // a,b
如果數組為空,返回undefined
復制代碼 代碼如下:
// 使用pop彈出數組末尾元素
// 返回被彈出的元素值
var tmp = [];
var val = tmp.pop();
alert(val); // undefined
alert(tmp); // 空
利用以上四個函數,我們可以做一些隊列處理,具體案例就不寫代碼了。
push功能其實也可以這么實現
復制代碼 代碼如下:
var tmp = ['a','b','c'];
tmp[tmp.length] = 'd';
alert(tmp); // a,b,c,d
注意:以上四個函數unshift、shift、pop、push函數操作都會在數組本身上修改。