1. 程式人生 > >JS判斷陣列或者一個字串中出現次數最多的元素及其出現的次數

JS判斷陣列或者一個字串中出現次數最多的元素及其出現的次數

1. 判斷一個字串中出現次數最多的字母:

function maxCount(str) {  
   var obj={};
   for(var i=0;i<str.length;i++){  
       var key=str[i];  
       if(obj[key]){
           obj[key]++;  
       }else{  
           obj[key]=1;
       }  
   }  
 
   var maxCount=0;
   var maxString="";
   for(var key in obj){  
       if(maxCount<obj[key]){  
           maxCount=obj[key]; 
           maxString=key;  
       }  
   }  
   return "出現次數最多的字母:"+maxString+"出現了"+maxCount+"次";  

    }  

2. 判斷陣列中出現次數最多的元素:

function maxCountElement(arr) {  
   var obj={};
   for(var i=0;i<arr.length;i++){  
       var key=arr[i];  
       if(obj[key]){
           obj[key]++;  
       }else{  
           obj[key]=1;
       }  
   }  
 
   var maxCount=0;
   var maxElement=arr[0];
   for(var key in obj){  
       if(maxCount<obj[key]){  
           maxCount=obj[key]; 
           maxElement=key;  
       }  
   }  
   return "該陣列中出現次數最多的元素:"+maxElement+"出現了"+maxCount+"次";  
    }  

注: 上面的程式碼有一點小的瑕疵,如果陣列中兩個不同的元素出現的次數一樣多,結果只會體現第一次遇見的次數最多的                   元素,和它次數一樣多的其他元素會被忽略掉。

改進方案程式碼如下:

function maxCountElement(arr) {  
   var obj={};
   for(var i=0;i<arr.length;i++){  
       var key=arr[i];  
       if(obj[key]){
           obj[key]++;  
       }else{  
           obj[key]=1;
       }  
   }  
 
   var maxCount=0;
   var maxElement=arr[0];
   var eq = [];
   for(var key in obj){  
       if(maxCount < obj[key]){  
           maxCount=obj[key]; 
           maxElement=key;  
           eq.length=0;
       }else if(maxCount === obj[key]){  
       eq.push(key);
       }
   }  
   if(eq.length > 0){
   for(var j=0;j<eq.length;j++){
   maxElement+=','+eq[j];
   }
   }
   return "該陣列中出現次數最多的元素:"+maxElement+"-----出現了:"+maxCount+"次";  
    }  

    var arr = [1,2,2,3,3,4,5,6];
    var res = maxCountElement(arr);

    console.log(res);

執行結果如下:


計算陣列中每個元素出現的次數

var names = ['Alice', 'Bob', 'Tiff', 'Bruce', 'Alice'];

var countedNames = names.reduce(function (allNames, name) { 
  if (name in allNames) {
    allNames[name]++;
  }
  else {
    allNames[name] = 1;
  }
  return allNames;
}, {});
// countedNames is:
// { 'Alice': 2, 'Bob': 1, 'Tiff': 1, 'Bruce': 1 }

相關推薦

JS判斷陣列或者一個字串出現次數元素及其出現次數

1. 判斷一個字串中出現次數最多的字母:function maxCount(str) {      var obj={};    for(var i=0;i<str.length;i++){          var key=str[i];          if(ob

java輸出一個字串出現次數的字元以及次數

1 先把字串轉化為陣列 .toCharArray 2 定義一個數組count[i] 存取每個字元 以及數量 count[i]++ 3 計算每個字元 以及值 4 取count的最大值 public class MaxString { public sta

[遞迴] 排列組合 - 從一個字串任意選取N個元素構成的所有排列組合 - C語言

排列組合 【題目】求從字串中"ABCD"中任取3個元素構成的所有排列組合 A

一個字串找出長迴文串

如何高效的在一個字串中找到最長的迴文串呢?下面我們根據程式碼來分析 首先,迴文串有兩種,一種是字串的長度是偶數,另一種就是奇數。 我們從字串第二個字元開始,同樣我們把當前起始字元叫做k 先檢驗奇數長度的字串,對比該字元的前一個和後一個(k -

java統計字串每個字元出現次數並查詢出現次數的字元和次數

mport java.util.Arrays; import java.util.Collection; import java.util.HashMap; import java.util.Map; import java.util.Map.Entry; public c

字串出現次數的字母及次數

import java.util.ArrayList; import java.util.Collections; import java.util.Iterator; import java.util.TreeSet; public class JavaTest1 {

hdu 1806 Frequent values(給定一個非降序陣列,求任意區間內出現次數的數的次數)

1.題目解析可見《訓練指南》P198 2程式碼: #include<cstdio> #include<cstring> #include<cmath> #defin

Python實現找到陣列出現的數字的次數

練手的demo程式碼,存下來記錄一下。 import numpy as np import random def random_int_list(start, stop, length): s

面試題:字串出現次數的字母和次數(基礎思路篇)

今天中午公司要求的小功能寫完之後,想了想之前的一道面試題。 題目: 給一個字串,找到出現次數最多的字母和次數(手寫程式碼) 當時想到了用map,但是寫了一半感覺到自己對map還是不熟練,手寫寫不出來,於是就換了個思路。 原理: 通過字串分割函式分割字串,判斷分割後的長度來比較字母的次

JAVA找出List集合重複次數的資料和次數

import java.util.ArrayList; import java.util.HashMap; import java.util.Iterator; import java.util.List; import java.util.Map; import java.util.Map.Ent

詢問區間內出現次數的數出現次數

POJ 3368 Frequent Values(RMQ) 題意:         給出一個非降序排列的整數陣列a1,a2,...an,你的任務是對於一系列詢問(i, j),回答ai,ai+1,...aj中出現最多次數的值所出現的次數? 分析:劉汝佳:訓練指南P19

js 判斷一個字串出現次數的字元,統計其出現次數

js 判斷一個字串中出現次數最多的字元,統計其出現次數 var str = 'asdfssaaasasasasaa'; var json = {}; for (var i = 0; i < str.length; i++) { if(!json[str.charAt(i

(ES6的“...“配合ES5‘’forEach‘’)前端面試之判斷一個字串出現次數的字元,統計這個次數

// 判斷一個字串中出現次數最多的字元,統計這個次數 let str = 'aasdadddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddsdasjjhsghkafsagjkg

判斷一個字串出現次數的字元,統計這個次數

var str = 'asdfssaaasasasasaa'; var json = {}; for (var i = 0; i < str.length; i++) { if(!json[str.charAt(i)]){ json[str.cha

js演算法:找出一個字串出現次數的字元!

在其他部落格裡面看到了一種方法: 這個方法很簡單,但是15-20行程式碼對於萌新來說,不是很好理解,因此我給出了以下這個方案,先想辦法統計出所有字母各出現的次數,然後把這些次數push到一個數組裡面,找出最大的那個數(我這裡是通過排序找出的最大數),最大數有了,該數對應的字元不就很容易

Java 統計一個字串每個單詞,或者字母出現次數

package cn.itcast.demo24; import java.util.HashMap; /*  * 用程式碼實現以下需求(1)有如下字串"If you want to change your fate I think you must come to the

一個字串查詢子字串出現次數(兩種方法)(遍歷查詢和切割判斷

                /** * 思路:開始找,如果返回-1,結束程式 * 否則,計數+1,再繼續從新的位置開始找,直到找不到 */ String str = "www.baidu.com/www.sina.com"; String s

javascript判斷一個字串或者數組裡面出現元素及其出現次數

不多說哈,直接上程式碼: 判斷一個字串: var str = "aabbbcccc"; var obj = {};//定義一個物件來儲存str拆分出來的元素,把一個字元當做key,字元出現的次數當做value 儲存在obj中 for (var i = 0;

如何判斷一個字元在一個字串出現次數

      在平常的業務中,會有業務單據上有多個所屬部門的資訊,如何判斷出有多個部門,如下例項所示,可以通過判斷分號來判斷部門的個數。 with t as (select ';11482;11484;107875;' dept_id from dual) select le

js 使用正則判斷某字元在字串出現次數

js 使用正則判斷某個字元在整個字串中出現的次數 function patch(s, re) { re = eval("/" + re + "/ig") retur