JavaScript常見數(shù)組方法之如何轉(zhuǎn)置矩陣
今天這篇文章就是來和大家詳細(xì)聊聊JavaScript常見數(shù)組方法,不知道大家有沒有學(xué)過線性代數(shù)呢,如果學(xué)過那么矩陣轉(zhuǎn)置那可就太熟悉了。
今天我想試試能不能用數(shù)組來實現(xiàn)矩陣轉(zhuǎn)置呢?
想知道,那就接著往下看吧。希望大家讀完有所收獲,那我辛苦碼字也就值了。
一、常見二維數(shù)組操作
??創(chuàng)建與遍歷
在前面的篇章中,已經(jīng)學(xué)習(xí)了一維數(shù)組的各種創(chuàng)建方式,了解一維數(shù)組如何創(chuàng)建后,二維數(shù)組的創(chuàng)建就非常的簡單了,只需將數(shù)組元素設(shè)置為數(shù)組即可。
?? 在創(chuàng)建完二維數(shù)組后,如何遍歷二維數(shù)組中的元素,對其進(jìn)行操作呢?
- 一維數(shù)組可以利用for、for…in或for…of(ES6提供)進(jìn)行遍歷。
- 二維數(shù)組只需在遍歷數(shù)組后,再次遍歷數(shù)組的元素即可。
另外,在Web項目開發(fā)中,還經(jīng)常通過多維空數(shù)組添加元素的方式來創(chuàng)建多維數(shù)組。下面以添加二維空數(shù)組元素為例進(jìn)行演示。
若要為二維數(shù)組元素(如arr[i][0])賦值,首先要保證添加的元素(如arr[i])已經(jīng)被創(chuàng)建為數(shù)組,否則程序會報“Uncaught TypeError……”錯誤。
??注意
在創(chuàng)建多維數(shù)組時,雖然JavaScript沒有限制數(shù)組的維數(shù),但是在實際應(yīng)用中,為了便于代碼閱讀、調(diào)試和維護(hù),推薦使用三維及以下的數(shù)組保存數(shù)據(jù)。
??【案例】二維數(shù)組轉(zhuǎn)置
二維數(shù)組的轉(zhuǎn)置指的是將二維數(shù)組橫向元素保存為縱向元素。
代碼實現(xiàn)思路:
- 找規(guī)律:res[0][0] = arr[0][0]、res[0][1] = arr[1][0]、res[0][2] = arr[2][0]。
- 得結(jié)論: res[i][j] = arr[j][i]。②
- res數(shù)組長度=arr元素(如arr[0])的長度。③
- res元素(如res[0])的長度=arr數(shù)組的長度。④
- 按照③和④完成res的創(chuàng)建與遍歷,按②進(jìn)行轉(zhuǎn)置。
為了讓你們有成就感我就不貼代碼了,有問題可以在評論區(qū)提出。其實矩陣完全可以存在數(shù)組里,以后做矩陣轉(zhuǎn)置直接運行代碼就行了。
二、常見數(shù)組方法
??棧和隊列方法
JavaScript中,除了前面講解的添加與刪除數(shù)組元素的方式外,還可以利用Array對象提供的方法,模擬棧和隊列的操作。
- 在數(shù)組的末尾或開頭添加數(shù)組的新元素。
- 在數(shù)組的末尾或開頭刪除數(shù)組元素。
- push()和unshift()方法的返回值是新數(shù)組的長度。
- pop()和shift()方法返回的是移出的數(shù)組元素。
??檢索方法
在開發(fā)中,若要檢測給定的值是否是數(shù)組,或是查找指定的元素在數(shù)組中的位置。
表中除了Array.isArray()方法外,其余方法默認(rèn)都是從指定數(shù)組索引的位置開始檢索,且檢索方式與運算符“===”相同,即只有全等時才會返回比較成功的結(jié)果。
?includes()和Array.isArray()方法
- includes()方法的第1個參數(shù)表示待查找的值。
- includes()方法的第2個參數(shù)用于指定在數(shù)組中查找的下標(biāo)。
- 設(shè)置為大于數(shù)組長度時,數(shù)組不會被檢索,直接返回false。
- 設(shè)置為小于0的數(shù)時,則檢索的索引位置等于數(shù)組長度加上指定的負(fù)數(shù),若結(jié)果仍是小于0的數(shù),則檢索整個數(shù)組。
?indexOf()方法
indexOf()用于在數(shù)組中從指定下標(biāo)位置,檢索到的第一個給定值,存在則返回對應(yīng)的元素下標(biāo),否則返回-1。
?? 注意
indexOf()方法的第2個參數(shù)用于指定開始查找的下標(biāo):
- 當(dāng)其值大于或等于數(shù)組長度時,直接返回-1。
- 當(dāng)其值為負(fù)數(shù)時,則查找的下標(biāo)位置等于數(shù)組長度加上指定的負(fù)數(shù),若結(jié)果仍是小于0的數(shù),則檢索整個數(shù)組。
?lastIndexOf()方法
Array對象提供的lastIndexOf()方法,用于在數(shù)組中從指定下標(biāo)位置檢索到的最后一個給定值的下標(biāo)。與indexOf()檢索方式不同的是,lastIndexOf()方法默認(rèn)逆向檢索,即從數(shù)組的末尾向數(shù)組的開頭檢索。
??注意
lastIndexOf()方法的第2個參數(shù)用于指定查找的下標(biāo),且由于其采用逆向的方式檢索:
當(dāng)其值大于或等于數(shù)組長度時,則整個數(shù)組都會被查找。
當(dāng)其值為負(fù)數(shù)時,則索引位置等于數(shù)組長度加上給定的負(fù)數(shù),若其值仍為負(fù)數(shù),則直接返回-1。
??數(shù)組轉(zhuǎn)字符串
開發(fā)中若需要將數(shù)組轉(zhuǎn)換為字符串時,則可以利用JavaScript提供的方法實現(xiàn)。
??join()和toString()方法的相同點:
- 可將多維數(shù)組轉(zhuǎn)為字符串,默認(rèn)情況下使用逗號連接。
- 當(dāng)數(shù)組元素為undefined、null或空數(shù)組時,對應(yīng)的元素會被轉(zhuǎn)換為空字符串
??join()和toString()方法的不同點:
- join()方法可以指定連接數(shù)組元素的符號。
??其他方法
除了前面講解的幾種常用方法外,JavaScript還提供了很多其他常用的數(shù)組方法。例如,合并數(shù)組、數(shù)組淺拷貝、顛倒數(shù)組元素的順序等。
??注意
- slice()和concat()方法在執(zhí)行后返回一個新的數(shù)組,不會對原數(shù)組產(chǎn)生影響,剩余的方法在執(zhí)行后皆會原數(shù)組產(chǎn)生影響。
- splice()方法的第1個參數(shù)的值等于或大于數(shù)組長度時,從數(shù)組末尾開始操作;當(dāng)該值為負(fù)數(shù)時,則下標(biāo)位置等于數(shù)組長度加上指定的負(fù)數(shù),若其值仍為負(fù)數(shù),則從數(shù)組的開頭開始操作。
總結(jié)
到此這篇關(guān)于JavaScript常見數(shù)組方法之如何轉(zhuǎn)置矩陣的文章就介紹到這了,更多相關(guān)JavaScript數(shù)組轉(zhuǎn)置矩陣內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
JavaScript數(shù)據(jù)類型檢測實現(xiàn)方法詳解
Javascript中檢查數(shù)據(jù)類型一直是老生常談的問題,類型判斷在web開發(fā)中也有著非常廣泛的應(yīng)用,所以下面這篇文章主要給大家介紹了關(guān)于JS數(shù)據(jù)類型檢測的那些事,需要的朋友可以參考下2022-11-11Three.js開發(fā)實現(xiàn)3D地圖的實踐過程總結(jié)
這篇文章主要給大家介紹了關(guān)于利用Three.js開發(fā)實現(xiàn)3D地圖的實踐過程,文中通過示例代碼介紹的非常詳細(xì),對大家學(xué)習(xí)或者使用three.js具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧。2017-11-11vue2.x的深入學(xué)習(xí)--關(guān)于h函數(shù)的說明
下面小編就為大家分享一篇基于h函數(shù)詳解,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧2021-08-08Bootstrap基本組件學(xué)習(xí)筆記之進(jìn)度條(15)
這篇文章主要為大家詳細(xì)介紹了Bootstrap基本組件學(xué)習(xí)筆記之進(jìn)度條,具有一定的參考價值,感興趣的小伙伴們可以參考一下2016-12-12js實現(xiàn)帶關(guān)閉按鈕始終顯示在網(wǎng)頁最底部工具條的方法
這篇文章主要介紹了js實現(xiàn)帶關(guān)閉按鈕始終顯示在網(wǎng)頁最底部工具條的方法,是非常實用的javascript固定效果,具有一定參考借鑒價值,需要的朋友可以參考下2015-03-03