前几天在学习js的时候,碰到了这样一道面试题,要求计算出给你一个随机乱敲的一个字符串,要求在其中找出那个字符出现的次数最多,以及出现的个数。

这你有两种方案,请大家仔细阅读,有可能在你将来的面试中会碰到。

 <!DOCTYPE html>
 <html xmlns="http://www.w3.org/1999/xhtml">
 <head>
 <meta http-equiv="Content-Type" content="text/html; charset=utf-8"/>
     <title></title>
       <script type="text/javascript">
         //给定一个字符串,需要在其中找出哪个字符出现的次数最多,并且计算出这个字符出现的总次数
         //01自定义一个字符串
         var str = "fjalsfj1fds;lafsafafafasfas";
         /*
         02.JSON定义法类似于直接定义法,JSON定义法就是将直接定义法定义的函数与属性放到大括号中,
         并且去掉属性与函数签名的对象名,把等于号改为了冒号,每行后面改为逗号!
         */
         var json = {};
         //03遍历str字符串
         for (var i = 0; i < str.length; i++) {
             /*04.str.charAt(i):在字符串中取出对应的i处的索引的字符串。
                 判断当前元素是否已经在数组中存在
             */
             if (!json[str.charAt(i)]) {
                 json[str.charAt(i)] = 1;//05给对应数组元素中个数赋值
             } else {
                 json[str.charAt(i)]++;
             }
         }
         var iMax = 0;//出现次数
         var iIndex = "";//元素名称
         for (var i in json) {//重新赋值出现最多的元素
             if(json[i]>iMax){
                 iMax = json[i];
                 iIndex = i;
             }
         }
         alert("出现次数最多的是:"+iIndex+"出现"+iMax+"次");

     </script>
 </head>
 <body>

 </body>
 </html>
 <!DOCTYPE html>
 <html xmlns="http://www.w3.org/1999/xhtml">
 <head>
 <meta http-equiv="Content-Type" content="text/html; charset=utf-8"/>
     <title></title>
     <script type="text/javascript">
         var str = "adadfdfseffserfefsefseeffffftsdg"; //命名一个变量放置给出的字符串
         var maxLength = 0; //命名一个变量放置字母出现的最高次数并初始化为0
         var result = ''; //命名一个变量放置结果输入   

         while (str != '') { //循环迭代开始,并判断字符串是否为空
             oldStr = str; //将原始的字符串变量赋值给新变量
             getStr = str.substr(0, 1); //用字符串的substr的方法得到第一个字符(首字母)
             eval("str = str.replace(/" + getStr + "/g,'')");

             if (oldStr.length - str.length > maxLength) { //判断原始的字符串的长度减去替代后字符串长度是否大于之前出现的最大的字符串长度
                 maxLength = oldStr.length - str.length; //两字符串长度相减得到最大的字符串长度
                 result = getStr + "=" + maxLength //返回最大的字符串结果(字母、出现次数)
             }
         }
         alert(result) //弹出结果
 </script>
 </head>
 <body>

 </body>
 </html>

希望看完后对大家有帮助,还希望读者如果有更多,更经典的面试题,请发送到我的邮箱18813091329@163.com

js面试题的更多相关文章

  1. 10个常见的Node.js面试题

    如果你希望找一份有关Node.js的工作,但又不知道从哪里入手评测自己对Node.js的掌握程度. 本文就为你罗列了10个常见的Node.js面试题,分别考察了Node.js编程相关的几个主要方面. ...

  2. 所在实习公司的JS笔试题

    在班上无聊的时候看到了一份JS笔试题(我是电面进去的,没做过这份题~~),开始还觉得蛮简单......后来觉得还是很有意思的,贴出来一起看看. 题目一: if(!("a" in w ...

  3. 有点难度的JS面试题

    自己总结了一些JS面试题 希望能够帮助正在找工作的程序猿(●´∀`●) 1.js 实现一个函数对javascript中json 对象进行克隆 var oldObject ="sdf" ...

  4. Node.js面试题之2017

    译者按: 从ECMAScript标准,Node.js语法以及NPM模块角度来看,Node.js的发展让人目不暇接,那么面试题也得与时俱进. 原文: Node.js Interview Question ...

  5. vue.js面试题整理

    Vue.js面试题整理 一.什么是MVVM? MVVM是Model-View-ViewModel的缩写.MVVM是一种设计思想.Model 层代表数据模型,也可以在Model中定义数据修改和操作的业务 ...

  6. 一道JS面试题引发的血案

    刚入职新公司,属于公司萌新一枚,一天下午对着屏幕看代码架构时. BI项目组长给我看了一道面试别人的JS面试题. 虽然答对了,但把理由说错了,照样不及格. 话不多说,直接上题: var a = 1; s ...

  7. js经典试题之常用的方法

    js经典试题之常用的方法 1.下面代码输出的值 let s = "bob" const replaced = s.replace('b', 'l') replaced === &q ...

  8. js经典试题之运算符的优先级

    js经典试题之运算符 1.假设val已经声明,可定义为任何值.则下面js代码有可能输出的结果为: console.log('Value is ' + (val != '0') ? 'define' : ...

  9. js经典试题之ES6

    js经典试题之ES6 1:在ECMAScript6 中,Promise的状态 答案:pending  resolved(fulfilled) rejected 解析: Promise对象只有三种状态: ...

  10. js经典试题之w3规范系列

    js经典试题之w3规范系列 1:w3c 制定的 javascript 标准事件模型的正确的顺序? 答案:事件捕获->事件处理->事件冒泡 解析:先事件捕获从windows > doc ...

随机推荐

  1. 北京地铁站点遍历最少经站次数问题普遍意义上是一个NP问题,目前不存在多项式时间算法能够解决该问题

    http://www.cnblogs.com/jiel/p/5852591.html 众所周知求一个图的哈密顿回路是一个NPC问题: In the mathematical field of grap ...

  2. Wavefront OBJ 转换成OpenGL ES使用的C/C++文件

    项目需要展示3D max模型,通过调研

  3. 高可用与负载均衡(8)之聊聊 LVS重要参数和优化以及监控

    preface 在明白LVS-DR模式的部署之后,我们看看LVS的几个重要参数: 如有问题,请联系我18500777133@sina.cn [root@localhost ~]# ls /proc/s ...

  4. 理解与应用css中的display属性

    理解与应用css中的display属性 display属性是我们在前端开发中常常使用的一个属性,其中,最常见的有: none block inline inline-block inherit 下面, ...

  5. mongo&node

    /////  node install $ sudo apt-get install python-software-properties $ curl -sL https://deb.nodesou ...

  6. omnet++5.0安装使用

    1.下载Windows安装包,5.0的omnetpp-5.0-src-windows.zip 2.解压到d盘 3.D:\omnetpp-5.0\doc找到这个目录,下面有个InstallGuide.p ...

  7. 《高性能MySQL》读书笔记--锁、事务、隔离级别 转

    1.锁 为什么需要锁?因为数据库要解决并发控制问题.在同一时刻,可能会有多个客户端对表中同一行记录进行操作,比如有的在读取该行数据,其他的尝试去删除它.为了保证数据的一致性,数据库就要对这种并发操作进 ...

  8. Java——列表框:JList

    import java.awt.Container; import java.awt.GridLayout; import java.awt.event.WindowAdapter; import j ...

  9. QT 初阶 1.3 节 控件的几何排列

    #include "mainwindow.h" #include <QApplication> #include <QHBoxLayout> #includ ...

  10. ecshop网站搬家缓存无法更新

    问题描述: 1.后台产品列表能改,数据也能看到,前端就是不显示 2.缓存无法删除 3.网上其他方法都试过,还是不行 症状:是因为缓存无法删除,无法更新,只需要能重新更新缓存文件即可.网站搬家丢失tem ...