1. 程式人生 > >js 算出Array陣列中出現次數最多的元素

js 算出Array陣列中出現次數最多的元素

<%@ Page Language="C#" AutoEventWireup="true" CodeFile="Default.aspx.cs" Inherits="_Default" %>

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">

<html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
    <title></title>
    <script type="text/javascript">
        var array = new Array(4, 5, 4,7, 8, 4,2,67,5,89,5,67);
        var count = 1;
        var yuansu= new Array();//存放陣列array的不重複的元素比如{4,5,7,8,2,67,89,}
        var sum = new Array(); //存放陣列array中每個不同元素的出現的次數
        for (var i = 0; i < array.length; i++) { 
            for(var j=i+1;j<array.length;j++)
            {
                if (array[i] == array[j]) {
                    count++;//用來計算與當前這個元素相同的個數
                    array.splice(j, 1); //沒找到一個相同的元素,就要把它移除掉,
                    j--; 
                }
            }
            yuansu[i] = array[i];//將當前的元素存入到yuansu陣列中
            sum[i] = count;  //並且將有多少個當前這樣的元素的個數存入sum陣列中
            count =1;  //再將count重新賦值,進入下一個元素的判斷
        }
        var str = '';
        //算出array陣列中不同的元素出現的次數
        for (var i = 0; i < yuansu.length; i++) { 
           str+=yuansu[i]+"出現的次數為:"+sum[i]+"<br/>";
        }
       document.write(str);
       //算出array陣列中出現次數最多的兩個元素
       var newsum = new Array(); //  sum;
       for (var item in sum) {
           newsum[item] = sum[item];
       }
       newsum.sort();
       //document.write(sum.toString()+"<br/>");
       //document.write(newsum.toString() + "<br/>");
       var first = ''; //存放出現次數最多的元素,以及個數
       var second = '';  //存放出現次數居第二位的元素,以及個數
       var fcount = 1; //計算出現次數最多的元素總共有多少個
       //算出出現次數最多的元素及個數
       document.write("<br/>");
       for (var i = 0; i < sum.length; i++) {
           if (sum[i] == newsum[newsum.length - 1]) {
               //document.write("出現次數最多的元素是:" + yuansu[i] + "次數為:" + sum[i] + "<br/>");
               first += "出現次數最多的元素是:" + yuansu[i] + "次數為:" + sum[i] + "<br/>";
               fcount++;
           }

       }
       //算出出現次數居第二位的元素及個數
       for (var i = 0; i < sum.length; i++) {
        
           if (sum[i] == newsum[newsum.length - fcount]) {
               //document.write("出現次數居第二位的元素是:" + yuansu[i] + "次數為:" + sum[i] + "<br/>");
               second += "出現次數居第二位的元素是:" + yuansu[i] + "次數為:" + sum[i] + "<br/>"
           }
       }
       document.write("出現次數最多的元素有"+(fcount-1)+"個<br/>"+first+"<br/>"+second);
    </script>
</head>
<body>
    <form id="form1" runat="server">
    <div>
    </div>
    </form>
</body>
</html>