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