摘要:添加元素到數組合并兩個數組錯誤方法應該用方法,將被的數組當成參數數組。會改變數組,返回最新屬性,占用內存較少。
一、Array.prototype.concat()
concat方法將創建一個新的數組,然后將調用它的對象(this指向的對象)中的元素以及所有參數中的數組類型的參數中的元素以及非數組類型的參數本身按照順序放入這個新數組,并返回該數組。
concat方法并不修改調用它的對象(this指向的對象)和參數中的各個數組本身的值,而是將他們的每個元素拷貝一份放在組合成的新數組中。原數組中的元素有兩種被拷貝的方式:
對象引用(非對象直接量):concat方法會復制對象引用放到組合的新數組里,原數組和新數組中的對象引用都指向同一個實際的對象,所以,當實際的對象被修改時,兩個數組也同時會被修改,如:原數組和新數組里都有一個對象obj,如果改變其屬性,則原數組與新數組里的obj屬性都發生變化。
字符串和數字(是原始值,而不是包裝原始值的String和Number對象):concat方法會復制字符串和數字的值放到新數組里。
var alpha = ["a", "b", "c"]; var numeric = [1, 2, 3]; // 組成新數組 ["a", "b", "c", 1, 2, 3]; 原數組 alpha 和 numeric 未被修改 var alphaNumeric = alpha.concat(numeric);
var num1 = [1, 2, 3]; var num2 = [4, 5, 6]; var num3 = [7, 8, 9]; // 組成新數組[1, 2, 3, 4, 5, 6, 7, 8, 9]; 原數組 num1, num2, num3 未被修改 var nums = num1.concat(num2, num3);
var alpha = ["a", "b", "c"]; // 組成新數組 ["a", "b", "c", 1, 2, 3], 原alpha數組未被修改 var alphaNumeric = alpha.concat(1, [2, 3]);二、Array.prototype.push()
push()方法添加一個或多個元素到數組的末尾,并返回數組新的長度(length屬性值)。
arr.push(element1, ..., elementN)
var sports = ["soccer", "baseball"]; var total = sports.push("football", "swimming"); console.log(sports); // ["soccer", "baseball", "football", "swimming"] console.log(total); // 4
錯誤方法
var sports1 = ["soccer", "baseball"]; var sports2 = ["football", "swimming"]; var total = sports1.push(sports2); /* or */ var total = Array.prototype.push.call(sports1, sports2); console.log(sports1); // ["soccter", "baseball", ["football", "swimming"]]
應該用apply方法,將被push的數組當成參數數組。
var sports1 = ["soccer", "baseball"]; var sports2 = ["football", "swimming"]; var total = Array.prototype.push.apply(sports1, sports2); console.log(sports1); // ["soccter", "baseball", "football", "swimming"]三、選擇哪個方法
Array.prototype.concat()返回一個新數組,不會改變原數組,但是會占用較多內存。
Array.prototype.push()會改變this數組,返回最新length屬性,占用內存較少。
參考:
Array.prototype.concat() - MDN
Array.prototype.push() - MDN
文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規行為,您可以聯系管理員刪除。
轉載請注明本文地址:http://specialneedsforspecialkids.com/yun/79524.html
摘要:可以看到,方法,簡潔高效,且能實現多個數組合并并且能夠實現深度嵌套注意最后還是使用了哦,換成是不可以的。多個數組合并原生的方法可以簡單實現多個數組合并,比如會返回至于其他方法,應該只是一個接口的問題,可以像下面這樣實現。 網易前端面試的時候,面試官問我有幾種數組合并的方法,當時第一反應就是concat,但是面試官說幾種,我尋思著原生js方法好像也只有concat呀,就說不改變原數組的話...
摘要:對于一些小數組來說,這樣做當然沒有問題。第一個主要問題在于,我們將要追加的數組的元素數量翻倍了當然是臨時性的,因為實質上要將數組內容拷貝到函數調用棧上。所以,假如要追加的數組中有一百萬個元素,那么幾乎一定會超過函數和的調用棧限制的大小。 原文鏈接: https://davidwalsh.name/combi... 這是一篇介紹 JavaScript 技術的小短文。我們將會講到組合/合并...
array.push.apply() 該方法會改變原數組 var arr1 = [1,2]; var arr2 = [aa,as]; arr1.push.apply(arr1, arr2); console.log(arr1); //[1, 2, aa, as] console.log(arr2); //[aa, as] n個數組合并成一個數組 var obj = { 1...
摘要:數組常用方法介紹刪除數組最后一位元素。開始下標刪除個數,插入元素可以多個注意當數組執行上面的這些方法時,都會修改原數組。輸出從數組中找出所有符合指定條件的元素。內容返回將數組合成一個值。合并數組或合并數組的值。 JavaScript 數組常用方法介紹 array.pop – 刪除數組最后一位元素。 var arr = [1, 2, 3]; arr.pop();// 返回 3 arr;/...
閱讀 1684·2023-04-25 20:16
閱讀 3838·2021-10-09 09:54
閱讀 2696·2021-09-04 16:40
閱讀 2517·2019-08-30 15:55
閱讀 830·2019-08-29 12:37
閱讀 2733·2019-08-26 13:55
閱讀 2903·2019-08-26 11:42
閱讀 3144·2019-08-23 18:26