JavaScript模擬數組合并concat
來源:易賢網 閱讀:796 次 日期:2016-08-02 14:26:00
溫馨提示:易賢網小編為您整理了“JavaScript模擬數組合并concat”,方便廣大網友查閱!

這篇文章主要介紹了JavaScript模擬數組合并concat的相關資料,需要的朋友可以參考下

定義和用法

concat() 方法用于連接兩個或多個數組。

該方法不會改變現有的數組,而僅僅會返回被連接數組的一個副本。

語法

arrayObject.concat(arrayX,arrayX,......,arrayX)

參數 描述
arrayX 必需。該參數可以是具體的值,也可以是數組對象??梢允侨我舛鄠€。

返回值

返回一個新的數組。該數組是通過把所有 arrayX 參數添加到 arrayObject 中生成的。如果要進行 concat() 操作的參數是數組,那么添加的是數組中的元素,而不是數組

。

我們有兩個這樣的數組

var arr1 = [1,2,3];

var arr2 = [4,5,6];

任務:合并成這樣,請至少提供兩種思路。

var arr1 = [1,2,3,4,5,6];

思路一:我們可以把第二個數組里面的值挨個添加到第一個數組的末尾。

1:數組怎么添加內容 ?[] || push || shift

2:怎么向數組最后一個索引添加值? push || [數組.length]

3:怎么挨個向數組一添加內容? for

4: for循環多少次? 你要添加多少就循環多少次,也就是arr2的長度

5: 要添加什么內容?arr2里面的值,怎么獲取,arr[?]

代碼實現:

var arr1 = [1,2,3];

var arr2 = [4,5,6];

for(var i=0;i<arr2.length;i++){

arr1.push(arr2[i]);

}

console.log(arr1); //[1, 2, 3, 4, 5, 6]

問題來了,原生js提供的concat方法不會修改原數組(arr1)的內容,而是返回一個新數組。

分析:既然是要返回值,那我們可以定義一個函數,然后再定義一個變量,這個變量來接收我們添加好的值,但是我們會一個問題,那就是不能在arr1上面push內容了,不然還是會修改原數組的內容。于是我覺得要把原數組復制一份,但是又有一個問題,就是對象是引用類型,簡單來說雖然我們可以把數組1復制到一個變量中,但是如果我用push或者[]的形式修改里面的值,或者添加,那么我們的原數組也會被修改,(如果你不知道什么是引用類型,可以去看我博客的第一頁或者在第二頁)這不是我們想要的結果,但是我們必須復制一份arr1。此時你有什么解決方法?

解決數組引用問題:

for(var i=0;i<arr1.length;i++){

arr3[i] = arr1[i];

}

我的思路是把數組1的值挨個的添加到arr3這個數組中,此時的arr3是這樣的

console.log(arr3) //[1, 2, 3]

任務:在這個新的數組arr3中添加arr2的所以值,方法和第一步一樣,如果忘記了回頭看看。

代碼實現:

var arr1 = [1,2,3];

var arr2 = [4,5,6];

var arr3 = [];

for(var i=0;i<arr1.length;i++){

arr3[i] = arr1[i];

}

for(var i=0;i<arr2.length;i++){

arr3.push(arr2[i]);

}

console.log(arr3);

問題:雖然這個已經實現了數組的合并,但是我每次合并都要重新寫一份,那樣太麻煩,于是我們得想個辦法把它封裝成一個函數,下次我們要用的時候調用它就行。

var arr1 = [1,2,3];

var arr2 = [4,5,6,7];

function Concat(arr1,arr2){

var arr3 = [];

for(var i=0;i<arr1.length;i++){

arr3[i] = arr1[i];

}

for(var i=0;i<arr2.length;i++){

arr3.push(arr2[i]);

}

return arr3;

}

console.log(Concat(arr1,arr2));

思路二:

分析:把arr1和arr2都轉換成字符串,然后將這兩段字符串相加得到一個組合,然后再把這個字符串轉成數組。

代碼實現:

var arr1 = [1,2,3];

var arr2 = [4,5,6,7,8,9];

var arr3 = (arr1.join(",")+","+arr2.join(",")).split(",");

出了點小問題,這個這個數組里面的值是字符串了。

["1", "2", "3", "4", "5", "6", "7", "8", "9"]

解決思路:遍歷這個數組,挨個把他們轉換成數字。

var arr1 = [1,2,3];

var arr2 = [4,5,6,7,8,9];

var arr3 = (arr1.join(",")+","+arr2.join(",")).split(",");

for(var i=0;i<arr3.length;i++){

arr3[i] = +arr3[i];

}

console.log(arr3);

課外擴展:繼承版

var arr1 = [1,2,3];

var arr2 = [4,5,6,7,8,9];

Array.prototype.Concat = function(arr){

var arr3 = [];

for(var i=0;i<this.length;i++){

arr3[i] = this[i];

}

for(var i=0;i<arr.length;i++){

arr3.push(arr[i]);

}

return arr3;

}

console.log(arr1.Concat(arr2));

以上所述是小編給大家介紹的JavaScript模擬數組合并concat的相關知識,希望對大家有所幫助!

更多信息請查看網絡編程
易賢網手機網站地址:JavaScript模擬數組合并concat
由于各方面情況的不斷調整與變化,易賢網提供的所有考試信息和咨詢回復僅供參考,敬請考生以權威部門公布的正式信息和咨詢為準!

2026國考·省考課程試聽報名

  • 報班類型
  • 姓名
  • 手機號
  • 驗證碼
關于我們 | 聯系我們 | 人才招聘 | 網站聲明 | 網站幫助 | 非正式的簡要咨詢 | 簡要咨詢須知 | 新媒體/短視頻平臺 | 手機站點 | 投訴建議
工業和信息化部備案號:滇ICP備2023014141號-1 云南省教育廳備案號:云教ICP備0901021 滇公網安備53010202001879號 人力資源服務許可證:(云)人服證字(2023)第0102001523號
云南網警備案專用圖標
聯系電話:0871-65099533/13759567129 獲取招聘考試信息及咨詢關注公眾號:hfpxwx
咨詢QQ:1093837350(9:00—18:00)版權所有:易賢網
云南網警報警專用圖標
未满十八18勿进黄网站免费看