JavaScript數組排序詳解:按索引值排序及常見問題解答
本文將介紹如何使用JavaScript高效排序數組,特別是按索引值排序的方法,並分析其性能。此外,還將解答一些關於JavaScript數組排序的常見問題。
一個按索引值排序的例子:
<code class="language-javascript">var data = Array(); data[0] = {"apples":1, "pears":2, "oranges":3}; data[1] = {"apples":3, "pears":3, "oranges":5}; data[2] = {"apples":4, "pears":1, "oranges":6}; console.log(data); //排序前 data.sort(function(a, b){ var a1= a.pears, b1= b.pears; if(a1== b1) return 0; return a1> b1? 1: -1; }); console.log(data); //排序后</code>
這段代碼演示瞭如何根據“pears”的值對數組進行排序。排序前後的結果一目了然:梨子的數量從1, 2, 3依次遞增。
<code class="language-javascript">// 对象数组 var array = [{id:'12', name:'Smith', value:1},{id:'13', name:'Jones', value:2}]; array.sort(function(a, b){ var a1= a.name, b1= b.name; if(a1== b1) return 0; return a1> b1? 1: -1; });</code>
<code class="language-javascript">// 数组数组 var array =[ ['12', 'Smith',1],['13', 'Jones',2]]; array.sort(function(a, b){ var a1= a[1], b1= b[1]; if(a1== b1) return 0; return a1> b1? 1: -1; });</code>
JavaScript數組排序常見問題 (FAQs)
JavaScript的sort()
函數默認按升序排序。要以降序排序,需要傳入一個比較函數。例如:
<code class="language-javascript">let array = [5, 2, 8, 1, 4]; array.sort(function(a, b) { return b - a; }); console.log(array); // 输出:[8, 5, 4, 2, 1]</code>
如果b - a
返回正值,則b
排在a
前面,實現降序排序。
通過傳入比較函數到sort()
函數即可實現。比較函數應返回兩個對象特定屬性的差值。例如:
<code class="language-javascript">let array = [ { name: 'John', age: 23 }, { name: 'Jane', age: 21 }, { name: 'Oliver', age: 25 } ]; array.sort(function(a, b) { return a.age - b.age; }); console.log(array);</code>
此例中,數組按對象的age
屬性排序。
sort()
函數對字符串數組進行排序嗎? 可以。 sort()
函數默認根據字符串的Unicode值排序,這可能與預期順序不符(例如,大寫字母的Unicode值小於小寫字母)。如果需要不區分大小寫的排序,可以在比較函數中將字符串轉換為小寫或大寫。例如:
<code class="language-javascript">let array = ['John', 'jane', 'Oliver']; array.sort(function(a, b) { return a.toLowerCase().localeCompare(b.toLowerCase()); }); console.log(array); // 输出:['jane', 'John', 'Oliver']</code>
sort()
函數默認將數字作為字符串排序,導致字典順序。要按數值順序排序,需要傳入比較函數,返回兩個數字的差值。例如:
<code class="language-javascript">let array = [10, 2, 30, 4]; array.sort(function(a, b) { return a - b; }); console.log(array); // 输出:[2, 4, 10, 30]</code>
sort()
函數對日期數組進行排序嗎? 可以。 sort()
函數可以比較Date對象,因為它們在比較時會轉換為自Unix紀元以來的毫秒數。例如:
<code class="language-javascript">let array = [ new Date(2021, 11, 1), new Date(2021, 10, 1), new Date(2021, 9, 1) ]; array.sort(function(a, b) { return a - b; }); console.log(array);</code>
此例中,數組按日期升序排序。
以上是jQuery排序數組由索引的詳細內容。更多資訊請關注PHP中文網其他相關文章!