您好,登錄后才能下訂單哦!
JavaScript中怎么對多維數組多鍵值進行排序,很多新手對此不是很清楚,為了幫助大家解決這個難題,下面小編將為大家詳細講解,有這方面需求的人可以來學習下,希望你能有所收獲。
JavaScript實現多維數組多鍵值排序方法
JavaScript的數組排序函數sort方法,默認是按照ASCII字符順序進行升序排列。
arrayobj.sort(sortfunction);
參數:sortFunction
可選項。是用來確定元素順序的函數的名稱。如果這個參數被省略,那么元素將按照ASCII字符順序進行升序排列。
sort方法將Array對象進行適當的排序;在執行過程中并不會創建新的Array對象。
如果為sortfunction參數提供了一個函數,那么該函數必須返回下列值之一:
負值,如果所傳遞的***個參數比第二個參數小。
零,如果兩個參數相等。
正值,如果***個參數比第二個參數大。
以上的方法在一維的排序還是很方便的,但像SQL語句中的ORDERBY一樣的多鍵值排序由怎么做呢?
多維數組的多鍵值排序,則需要復雜一些,但不需要用循環解決。實際解決的道理是一樣的。
數字:
以下的例子是將數字的多維數組按照第5列,第9列,第3列的順序排序,像SQL語句中的ORDERBYcol5,col9,col7。數字的時候可以直接兩個項目相減,以結果作為返回值即可。
<scriptlanguagescriptlanguage=javascript> varmyArray=newArray(); for(vari=0;i<10;i++)...{ myArray[i]=newArray(); myArray[i][0]=Math.floor(Math.random()*10); myArray[i][1]=Math.floor(Math.random()*10); myArray[i][2]=Math.floor(Math.random()*10); myArray[i][3]=Math.floor(Math.random()*10); myArray[i][4]=Math.floor(Math.random()*10); myArray[i][5]=Math.floor(Math.random()*10); myArray[i][6]=Math.floor(Math.random()*10); myArray[i][7]=Math.floor(Math.random()*10); myArray[i][8]=Math.floor(Math.random()*10); } myArray.sort(function(x,y)...{ return(x[0]==y[0])?((x[4]==y[4])?(x[8]-y[8]):(x[4]-y[4])):(x[2]-y[2]) }); for(vari=0;i<myArray.length;i++)...{ document.write(myArray[i].join(",")+"<br/>"); } </script>
字符:
字符的時候sortFunction中的項目不能像數字一樣直接相減,需要調用
str1.localeCompare(str2)方法來作比較,從而滿足返回值。以下是多維數組的第1,2列作排序的情況。
functionsortFunction(array)...{ returnarray.sort(function(x,y)...{ return(x[0]==y[0])?(x[1].localeCompare(y[1])):(x[0].localeCompare(y[0])) }); }
因此arrayObject.sort(sortFunction)的排序功能還是很強大的,終于能夠實現了SQL語句中的ORDERBY一樣的功能。
看完上述內容是否對您有幫助呢?如果還想對相關知識有進一步的了解或閱讀更多相關文章,請關注億速云行業資訊頻道,感謝您對億速云的支持。
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。