js數組排序、去重復、獲取最大最小值


說一下個人認為最簡單的排序方式,.sort()方法,sort()方法的兼容性也很好,主流瀏覽器都支持,排序的方式是按照字符編碼排序的,當然要把數組里的內容類型都統一,不然可比性很差。

sort()方法是js Array對象的一種方法,用來對數組進行排序(升序/降序),默認的排序方式就是“按字母升序”,當然如果是要把字母按照降序的排列方式排列,那么單純的sort()方法是實現不了的,先來demo1效果(字母升序):

demo1代碼:

<p id="demo">默認的排序方式</p>
        <script>
            function myFunction(){
                var fruits = ["Banana", "Orange", "Apple", "Mango"];
                fruits.sort();
                var x=document.getElementById("demo");
                x.innerHTML=fruits;
            }
            myFunction();
        </script>

有了升序,再來降序,demo2效果(字母降序):

demo2代碼:

<p id="demo2">默認的排序方式</p>
        <script>
            function myFunction(){
                var fruits = ["Banana", "Orange", "Apple", "Mango"];
                fruits.sort();
                fruits.reverse();
                var x=document.getElementById("demo2");
                x.innerHTML=fruits;
            }
            myFunction();
        </script>

這里用到的方法就是reverse(),該方法的作用就是前后顛倒數組中的內容;如果是對數字進行排序的話,那么必須有一個函數參考,demo3(數組數字升序):

demo3代碼:

<p id="demo3">默認的排序方式</p>
        <script>
            function sortFun (a,b) {
                return a-b;
            }
            function myFunction(){
                var fruits = [40,100,1,5,25,10];
                fruits.sort(sortFun);
                var x=document.getElementById("demo3");
                x.innerHTML=fruits;
            }
            myFunction();
        </script>

該myFunction()方法中用到的這個參考函數就是sortFun(),這個參數里面的兩個形參a、b的作用就是判斷a是否大於b(sort()方法里調用這個函數的時候,兩個參數就是數組的從左到右取出的順序),圖如下(console.log打印圖):

簡單的說就是三點:

1、a>b,a排在b的后面

2、a=b,a和b並列排

3、a<b,a排在b的前面

這樣的話,數組的數字升序不就是實現了嘛,如果是降序呢,很簡單,把a-b反過來寫就好了嘛,這就相當於 2-1=1,反過來就是 1-2=-1,一正一負,方向不就是相反的嘛,demo4(數組數字降序):

代碼如下:

<p id="demo4">默認的排序方式</p>
        <script>
            function sortFun (a,b) {
                console.log(a,b);
                return b-a;
            }
            function myFunction(){
                var fruits = [40,100,1,5,25,10];
                fruits.sort(sortFun);
                var x=document.getElementById("demo4");
                x.innerHTML=fruits;
            }
            myFunction();
        </script>

 當然你這降序和升序都弄好了,選取最大最小值就不用說了,(*^__^*) 嘻嘻……

****************************************************************************************

怎樣對數組里的元素去重復,這里呢個人認為最簡單的方法就是用到js里的一個方法,那就是indexOf(),該方法的作用就是:查找指定字符串第一次出現的位置,如果沒找到匹配的字符串則返回 -1。注意是=>>沒有找到什么什么就返回“-1”,那么例子來了,demo5:

代碼:

<p id="demo5">默認的排序方式</p>
        <script type="text/javascript">
            var arrA = [1,2,3,4,5,6,7,11,18,5,6,2,12],arrB = [],i = 0;
            for (; i<arrA.length; i++) {
                if (arrB.indexOf(arrA[i]) == -1) {
                    arrB.push(arrA[i]);
                }
            }
            var x=document.getElementById("demo5");
            x.innerHTML=arrB;
        </script>

** 如果數組包含的是對象列表,需求是對對象列表進行排序也是可以的,使用sort()也是非常的方便,代碼及截圖如下:

感謝大家閱讀到最后,你們都是大神!

 

轉載請注明出處!


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM