js 的數組怎麼push一個對象. Js數組的操做push,pop,shift,unshift JavaScrip

push()函數用於向當前數組的添加一個或多個元素,並返回新的數組長度。新的元素將會依次添加到數組的末尾。html

該函數屬於Array對象,全部主流瀏覽器均支持該函數。數組

語法瀏覽器

array.push( item1 [,items... ] )
參數函數

參數 描述
item1 任意類型添加到當前數組末尾處的元素。
items 可選參數/任意類型要添加到當前數組末尾處的其餘項,能夠有多個。
注意:若是添加的元素類型爲數組類型(Array),仍然會被看成一個元素看待,只是這個元素是數組類型而已。若是要合併兩個數組,請使用concat()函數。
返回值字體

push()函數的返回值爲
返回添加元素後的數組長度。編碼

當向數組中添加新的元素時,數組的length屬性也會隨之改變。通常而言,數組的length屬性將會加N(N爲添加的元素個數)。prototype

示例&說明視頻

// 定義一個數組對象
var array = ["CodePlayer", true];
document.writeln(array.length); // 2htm

// 向數組中添加一個元素
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
1、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
2、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); // 空
3、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
4、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函數操做都會在數組自己上修改。

相關文章
相關標籤/搜索