成人国产在线小视频_日韩寡妇人妻调教在线播放_色成人www永久在线观看_2018国产精品久久_亚洲欧美高清在线30p_亚洲少妇综合一区_黄色在线播放国产_亚洲另类技巧小说校园_国产主播xx日韩_a级毛片在线免费

資訊專欄INFORMATION COLUMN

(JavaScript) 合并數(shù)組的方法

econi / 2098人閱讀

摘要:添加元素到數(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ù)字(是原始值,而不是包裝原始值的StringNumber對象):concat方法會復(fù)制字符串和數(shù)字的值放到新數(shù)組里。

1. 連接兩個數(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);
2. 連接三個數(shù)組
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);
3. 將非數(shù)組值合并到數(shù)組里
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)

1. 添加元素到數(shù)組
var sports = ["soccer", "baseball"];
var total = sports.push("football", "swimming");

console.log(sports); // ["soccer", "baseball", "football", "swimming"]
console.log(total);  // 4
2. 合并兩個數(shù)組

錯誤方法

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

相關(guān)文章

  • JavaScript數(shù)組方法數(shù)組合并

    摘要:可以看到,方法,簡潔高效,且能實現(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ù)組的話...

    izhuhaodev 評論0 收藏0
  • JavaScript 小技巧之數(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ù)的小短文。我們將會講到組合/合并...

    張率功 評論0 收藏0
  • JavaScript數(shù)組合并數(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...

    ranwu 評論0 收藏0
  • Javascript數(shù)組常用方法

    摘要:數(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;/...

    verano 評論0 收藏0

發(fā)表評論

0條評論

econi

|高級講師

TA的文章

閱讀更多
最新活動
閱讀需要支付1元查看
<