本章來介紹Javascript如何進行陣列轉換與排序,讓大家了解Javascript中陣列轉換與排序的方法。有一定的參考價值,有需要的朋友可以參考一下,希望對你有幫助。
陣列的轉換
我們在專案的開發過程中,資料型別之間的轉換有著非常重要的作用,而陣列轉換成其他資料類型是我們常見的一種。
toString
這個方法是將陣列轉換成字串,陣列的每個元素都會呼叫「toString」方法,傳回一個新字串。字串是以數組中的每一個元素的字串形式拼接而成,且元素之間以逗號分隔。
定義沒看懂,我們看一個例子一定立刻就明白!
//语法 array.toString()
案例1
const numbers = [1, 2, 3, 4, 5]; const result = numbers.toString(); console.log(result); //1,2,3,4,5 console.log(typeof result); //string
案例2
const numbers = ["A", "B", "C"]; const result = numbers.toString(); console.log(result); //A,B,C console.log(typeof result); //string
//利用 reduce 方法模拟 toString 的执行过程 const numbers = [1, 2, 3, 4, 5]; const result = numbers.reduce((prev, current) => { return prev.toString() + "," + current.toString(); }); console.log(result); //1,2,3,4,5
看到這裡應該會有人疑問,是不是只能用逗號分隔呢?如果我用其它字元分隔可行嗎?可以告訴你「toString」方法肯定是不行了,但是我們可以利用其他方法來進行。
老規矩,我們還是會在每個方法的後面看看相容。
join
#該方法也是將一個數組轉換成字串,並傳回一個新的字符串。
方法會將陣列的每個元素轉換成字串,然後再用給定的字元去拼接成一個新的字串回傳給我們。
該方法接受一個參數:就是我們給定的分隔符號。
//语法 array.join(separator)
雖然說語法看起來比較簡單,但是有幾點我們需要注意的
#參數是可選的,如果沒有參數預設為逗號(,)
參數可以為空字串(""),這時會傳回一個沒有任何字元分隔的字串
如果陣列的元素中有undefined 或null,則會轉換為空字串("")
參數可以為空格,元素會以空格分隔
const numbers = [1, 2, 3, 4, 5]; const result1 = numbers.join(); console.log(result1);//1,2,3,4,5 const result2 = numbers.join(""); console.log(result2);//12345 const result3 = numbers.join(" "); console.log(result3);//1 2 3 4 5 const result4 = numbers.join("-"); console.log(result4);//1-2-3-4-5 const result5 = numbers.join("A"); console.log(result5);//1A2A3A4A5
“sort”方法的兼容性如何呢?直接上圖。
陣列的排序
#陣列的排序用到的場景有很多,例如表格的升序與降序,資料由大到小排列或依照某些規則去排列等等都會用到排序,如何有效到使用資料到排序方法,首先你要對這些方法有一定的了解才能使用比較恰當的方法。
reverse
從名稱我們應該就能猜出該方法的作用,該方法就是將陣列中的元素顛倒順序。
//语法 array.reverse()
//案例 const numbers = [1, 2, 3, 4, 5]; numbers.reverse(); console.log(numbers); //[5, 4, 3, 2, 1]
方法相對比較簡單,也沒什麼好解釋的,但是應用場景比較少,在實際的項目中我們並不是那麼簡單的數據結構,那麼簡單的排序規則,下面我們來重點介紹一個非常牛逼而且非常靈活的一個排序方法。
“reverse”方法的兼容性。
sort
#此方法對陣列的元素進行排序,預設會依照升序排列。先看看兩個例子吧
//案例1 const numbers = [1, 3, 5, 2, 4]; numbers.sort(); console.log(numbers); //[1, 2, 3, 4, 5]
//案例2 const numbers2 = [1, 15, 20, 2, 3]; numbers2.sort(); console.log(numbers2);//[1, 15, 2, 20, 3]
你會發現排序規則並不是我們想的那樣,究竟是怎麼一回事情呢?
其實在「sort」方法執行的時候,陣列的每個元素會先執行一次 toString() 方法,然後在依照字串的 Unicode 編碼進行排序。
那麼我們怎麼樣做才能按照我們自己的意願或說規則進行排序呢?
其实「sort」方法还接受一个可选的参数:该参数是一个函数,它可以用来指定我们数组排序的规则。
//语法 array.sort([callback])
那么我们应该如何利用这个参数去指定我们排序的规则呢?参数函数接受两个参数,然后会根据返回的两个参数的比较值进行排序。
array.sort(compare(a, b){ return a- b });
排序的规则如下:
如果 a - b 小于 0 ,那么 a 在 b 的前面,也就是会按照升序排列
如果 a - b 等于 0 ,那么 a 和 b 的位置相对不变
如果 a - b 大于 0 ,那么 b 在 a 的前面,也就是会按照降序排列。
例如我们想把上面的案例2中的数组按照数字的大小进行排列,我们只需要加入上面我们说的比较函数
const numbers2 = [1, 15, 20, 2, 3]; numbers2.sort(function(a ,b){ return a- b; }); console.log(numbers2);//[1, 2, 3, 15, 20]
是不是 so easy!如果我们想要进行降序排列也很简单,调换一个我们的计算方法就行。
const numbers2 = [1, 15, 20, 2, 3]; numbers2.sort(function(a ,b){ return b - a; }); console.log(numbers2);//[20, 15, 3, 2, 1]
但是在实际的使用当中我们不仅仅比较的是数字与字符类型,也可以能是比较的是对象,不过没关系我们依旧可以使用对象的属性去进行排序。
const friends = [{ name: "大B哥", age: 25 }, { name: "二B哥", age: 30 }, { name: "三B哥", age: 28 }, { name: "我", age: 14 }]; friends.sort(function(a, b){ return b.age - a.age; }); console.log(friends);
//排序之后 //[{name: "二B哥", age: 30}, //{name: "三B哥", age: 28}, //{name: "大B哥", age: 25}, //{name: "我", age: 14}]
可以看到我交的朋友一般都比较偏大,一眼就能看出哪个是最大的,哪个是最小的,不过我相信大家也看出来了,最小的哪个就是我(… 哈哈)。
至于 sort 更多更有趣的方法,小伙伴们不妨自己去寻找尝试吧。
继续来看看「sort」方法的兼容性。
以上是Javascript如何進行陣列轉換與排序?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

javaispopularforcross-platformdesktopapplicationsduetoits“ writeonce,runany where”哲學。 1)itusesbytiesebyTecodeThatrunsonAnyJvm-備用Platform.2)librarieslikeslikeslikeswingingandjavafxhelpcreatenative-lookingenative-lookinguisis.3)

在Java中編寫平台特定代碼的原因包括訪問特定操作系統功能、與特定硬件交互和優化性能。 1)使用JNA或JNI訪問Windows註冊表;2)通過JNI與Linux特定硬件驅動程序交互;3)通過JNI使用Metal優化macOS上的遊戲性能。儘管如此,編寫平台特定代碼會影響代碼的可移植性、增加複雜性、可能帶來性能開銷和安全風險。

Java將通過雲原生應用、多平台部署和跨語言互操作進一步提昇平台獨立性。 1)雲原生應用將使用GraalVM和Quarkus提升啟動速度。 2)Java將擴展到嵌入式設備、移動設備和量子計算機。 3)通過GraalVM,Java將與Python、JavaScript等語言無縫集成,增強跨語言互操作性。

Java的強類型系統通過類型安全、統一的類型轉換和多態性確保了平台獨立性。 1)類型安全在編譯時進行類型檢查,避免運行時錯誤;2)統一的類型轉換規則在所有平台上一致;3)多態性和接口機制使代碼在不同平台上行為一致。

JNI會破壞Java的平台獨立性。 1)JNI需要特定平台的本地庫,2)本地代碼需在目標平台編譯和鏈接,3)不同版本的操作系統或JVM可能需要不同的本地庫版本,4)本地代碼可能引入安全漏洞或導致程序崩潰。

新興技術對Java的平台獨立性既有威脅也有增強。 1)雲計算和容器化技術如Docker增強了Java的平台獨立性,但需要優化以適應不同雲環境。 2)WebAssembly通過GraalVM編譯Java代碼,擴展了其平台獨立性,但需與其他語言競爭性能。

不同JVM實現都能提供平台獨立性,但表現略有不同。 1.OracleHotSpot和OpenJDKJVM在平台獨立性上表現相似,但OpenJDK可能需額外配置。 2.IBMJ9JVM在特定操作系統上表現優化。 3.GraalVM支持多語言,需額外配置。 4.AzulZingJVM需特定平台調整。

平台獨立性通過在多種操作系統上運行同一套代碼,降低開發成本和縮短開發時間。具體表現為:1.減少開發時間,只需維護一套代碼;2.降低維護成本,統一測試流程;3.快速迭代和團隊協作,簡化部署過程。


熱AI工具

Undresser.AI Undress
人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover
用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool
免費脫衣圖片

Clothoff.io
AI脫衣器

Video Face Swap
使用我們完全免費的人工智慧換臉工具,輕鬆在任何影片中換臉!

熱門文章

熱工具

WebStorm Mac版
好用的JavaScript開發工具

Dreamweaver CS6
視覺化網頁開發工具

SAP NetWeaver Server Adapter for Eclipse
將Eclipse與SAP NetWeaver應用伺服器整合。

EditPlus 中文破解版
體積小,語法高亮,不支援程式碼提示功能

Safe Exam Browser
Safe Exam Browser是一個安全的瀏覽器環境,安全地進行線上考試。該軟體將任何電腦變成一個安全的工作站。它控制對任何實用工具的訪問,並防止學生使用未經授權的資源。