您好,登錄后才能下訂單哦!
javascript中new Array()和var arr=[]有什么區別?很多新手對此不是很清楚,為了幫助大家解決這個難題,下面小編將為大家詳細講解,有這方面需求的人可以來學習下,希望你能有所收獲。
var arr=[]
這是一種字面量定義數組的方法
var arr=new Array()
這是調用數組構造函數生成的數組
上面的2種定義數組的方法到底一樣不一樣
目前我們大致的認同是下面這樣的
用new 關鍵字去內存開辟一個存儲地址比較耗資源,耗內存.
而字面量方式直接在內存開辟一個存儲字段相對簡單,不耗資源.
我們首先不去否定上面的結論對不對.
首先從功能上來說 var =arr=[] 和 var arr= new Array() 是一樣的.
然后我們用一段代碼來驗證一下
var startTime=new Date().getTime(); var test1=[]; var test2=[]; for(var i=0;i<1000000;i++){ //test1[i]={}; test2[i]=new Object(); } var endTime=new Date().getTime(); console.log('輸出耗時:',endTime-startTime);
上面 test1 和 test2 2個數組中每個元素都是一個數組,可以依次注釋任意一行代碼,我大概測試10多次以上
結果
36**
36**
上面的2個耗時都是 3600 秒左右,忽上忽下,沒有絲毫大的差距
我的運行話就 MacBook Air (13-inch, Mid 2013) ,處理器:1.3 GHz Intel Core i5 , 內存: 4 GB 1600 MHz DDR3 , JS Runner 工具
所以姑且認為上面的2種方法差異不大.
[ ]和new Array()在語法上唯一的區別是new Array()可以直接設置數組的長度
new Array() 在構造數組的時候有下面幾種方法
var arr = new Array();
var arr = new Array(8);
var arr = new Array("c", "d", “e”);
字面量方式
var d = ["111", "222", "333"];
所以在性能上這2個方法沒有太大差距,只是一種使用習慣,字面量更加直接了當.
退一步講,如果我用 var arr=[‘111','222','333']; 定義一個數組的時候,難道它沒有通過構造函數在內存中開辟一個存放地址嗎?
js中數組Array的一些常用方法總結
var list = new Array()是我們在js中常常寫到的代碼,今天就總結哈Array的對象具有哪些方法。
list[0] = 0;
list[1] = 1;
list[2] = 2;
或者這樣聲明:var list = [0,1,2]
1 shift()t:刪除數組的第一個元素,返回刪除的值。這里是0
2 unshift(3,4):把參數加載數組的前面,返回數組的長度。現在list:中是3,4,0,1,2
3pop():刪除數組的最后一個元素,返回刪除的值。這里是2.
4push(3):將參數加載到數組的最后,返回數組的長度,現在List中時:0,1,2,3
5concat(3,4):把兩個數組拼接起來。
6splice(start,deleteCount,val1,val2,...):從start位置開始刪除deleteCount項,并從該位置起插入val1,val2,...
reverse:將數組反序
var a = [1,2,3,4,5];
var b = a.reverse(); //a:[5,4,3,2,1] b:[5,4,3,2,1]
sort(orderfunction):按指定的參數對數組進行排序
var a = [1,2,3,4,5];
var b = a.sort(); //a:[1,2,3,4,5] b:[1,2,3,4,5]
slice(start,end):返回從原數組中指定開始下標到結束下標之間的項組成的新數組
var a = [1,2,3,4,5];
var b = a.slice(2,5); //a:[1,2,3,4,5] b:[3,4,5]
join(separator):將數組的元素組起一個字符串,以separator為分隔符,省略的話則用默認用逗號為分隔符
var a = [1,2,3,4,5];
var b = a.join("|"); //a:[1,2,3,4,5] b:"1|2|3|4|5"
看完上述內容是否對您有幫助呢?如果還想對相關知識有進一步的了解或閱讀更多相關文章,請關注億速云行業資訊頻道,感謝您對億速云的支持。
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。