去重除了indexOf的其他方法(使用对象Key的方法)及统计重复次数
1、去重:
法1:使用数组IndexOf去重
法2:使用对象Key:
<script> var arr1 = [1,13,24,11,11,14,1,2];
let unique = function(arr) {
let hashTable = {};
let data = [];
for(let i=0,l=arr.length;i<l;i++) {
alert(!hashTable[arr[i]]);
if(!hashTable[arr[i]]) {
hashTable[arr[i]] = true;
data.push(arr[i]);
}
}
console.log(hashTable);
return data;
}
console.log(unique(arr1));
</script>
2、找出字符串中出现次数最多的字符及显示次数
法1、使用indexOf循环
//var str = "ssraetadsdafaerasssssdajigaf";
var str = "fffffff";
var strr = "";
var ci = 0;
var Lastname = "";
var Lastci = 0;
var ind = 0;
var flag1 = 0;
for(var i = 0;i<str.length;i++){
// console.log(str.charAt(i));
// console.log(strr);
if(strr.indexOf(str.charAt(i))!=-1){
//alert(strr.indexOf(str.charAt(i)));
continue;
}
//不加这个判断运行166次,加上以后运行38次
v1 : for(var j = 0;j<str.length+1;j++){
var indd = str.indexOf(str.charAt(i),ind);
ind = indd+1;
flag1++;
if(indd == -1){
ci = j;
ind = 0;
if(ci>=Lastci){
Lastci = ci;
Lastname = str.charAt(i);
}
break v1;
}
}
strr += str.charAt(i);
}
console.log("运行次数"+flag1);
console.log("出现最多的字母"+Lastname);
console.log("出现最多的次数"+Lastci);
//循环次数为arr.length+1,否则会影响类似ffffff这种字符串的判断。
法2:使用对象key值的方法
//法2:使用对象key值实现
function findMaxDuplicateChar(str) {
if(str.length == 1) {
return str;
}
let charObj = {};
for(let i=0;i<str.length;i++) {
if(!charObj[str.charAt(i)]) {
charObj[str.charAt(i)] = 1;
}else{
charObj[str.charAt(i)] += 1;
}
}
let maxChar = '',
maxValue = 1;
for(var k in charObj) {
if(charObj[k] >= maxValue) {
maxChar = k;
maxValue = charObj[k];
}
}
return maxChar;
}
去重除了indexOf的其他方法(使用对象Key的方法)及统计重复次数的更多相关文章
- 利用Linux命令行进行文本按行去重并按重复次数排序
最近杂事太多,正事进展缓慢.Fighting! linux命令行提供了非常强大的文本处理功能,组合利用linux命令能实现好多强大的功能.本文这里举例说明如何利用Linux命令行进行文本按行去重并按重 ...
- 1.面向过程编程 2.面向对象编程 3.类和对象 4.python 创建类和对象 如何使用对象 5.属性的查找顺序 6.初始化函数 7.绑定方法 与非绑定方法
1.面向过程编程 面向过程:一种编程思想在编写代码时 要时刻想着过程这个两个字过程指的是什么? 解决问题的步骤 流程,即第一步干什么 第二步干什么,其目的是将一个复杂的问题,拆分为若干的小的问题,按照 ...
- JavaScript 数组去重并统计重复元素出现的次数
1.方法一 var arr = [1, 2, 3, 1, 2, 4]; function arrayCnt(arr) { var newArr = []; for(var i = 0; i < ...
- Python进阶----反射(四个方法),函数vs方法(模块types 与 instance()方法校验 ),双下方法的研究
Python进阶----反射(四个方法),函数vs方法(模块types 与 instance()方法校验 ),双下方法的研究 一丶反射 什么是反射: 反射的概念是由Smith在1982年首次提出的 ...
- Python反射和内置方法(双下方法)
Python反射和内置方法(双下方法) 一.反射 什么是反射 反射的概念是由Smith在1982年首次提出的,主要是指程序可以访问.检测和修改它本身状态或行为的一种能力(自省).这一概念的提出很快引发 ...
- JS中对数组元素进行增、删、改、查的方法,以及其他方法
前言 昨天联调一个页面,看着就一个页面,接口倒是不少. 热点问题配置测试联调完成(同步异步接口共11个) 1.配置新增 2.配置编辑 3.配置删除 4.热点问题新增 5.热点问题编辑 6.热点问题删除 ...
- js常用的遍历方法以及flter,map方法
1.首先明确vue主要操作数据.他并不提倡操作dom. 数组的变异:能改变原数组. *** 先来复习下便利==遍历一个数组的四种方法: <script> let arr = [1, 2, ...
- Java 终结方法 避免使用终结方法
在Java中,当一个对象变得不可到达时,垃圾回收器会回收与该对象相关联的存储空间.用try-finally块来回收其他的非内存资源. 终结方法的缺点在于不能保证会被及时地执行.从一个对象变得不可到达开 ...
- javascript私有方法揭示为公有方法
揭示模式可用于将私有方法暴露为公共方法.当为了对象的运转而将所有功能放置在一个对象中以及想尽可能地保护该对象,这种揭示模式就非常有用. 板栗: var myarray; (function(){ va ...
随机推荐
- IOS设计模式的六大设计原则之里氏替换原则(LSP,Liskov Substitution Principle)
定义 里氏替换原则的定义有两种,据说是由麻省理工的一位姓里的女士所提出,因此以其名进行命名. 定义1:如果对一个类型为T1的对象o1,都有类型为T2的对象o2,使得以T1所定义的程序P中在o1全都替换 ...
- 中移苏研DCOS实践之路完整篇
一.实践背景 1.1现网生产系统存在的问题 在中国移动内部各省市公司,由于技术迭代.设备更新的原因,设备繁杂,有x86server .VMware虚拟机.OpenStack虚拟机以及不同厂商的物理机( ...
- Laravel5.1 -控制器(初步了解)
首先道个歉 这篇笔记是前两天就应该写的,可大K有点事儿要忙 就耽误了,今天抽空学了学控制器,并写个笔记分享下. 为什么要使用控制器 像我们之前写一些逻辑呢都是在Route(路由)中,搞得Route文件 ...
- 根据funID,personID获取最新规划包项目相关信息
1.定义:根据funID,personID获取最新规划包项目相关信息(code projecttype(阶段) Pname(code+name) projectID) 项目表tbl_cfg_Proje ...
- FFmpeg总结(六)AV系列结构体之AVPacket
AVPacket位置:libavcodec/avcodec.h下: watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvaGVqanVubGlu/font/5a6 ...
- cocos2d-x学习日志(18) --程序是怎样開始执行与结束?
问题的由来 怎么样使用 Cocos2d-x 高速开发游戏.方法非常easy,你能够看看其自带的例程,或者从网上搜索教程,执行起第一个HelloWorld,然后在 HelloWorld 里面写相关逻辑代 ...
- windows Objective-C模拟环境搭建
安装GNUstep GNUstep Windows Installer提供了Windows平台下的Objective-C的模拟开发环境,一共有四个软件包,其中GNUstep System和GNUste ...
- 深入理解line
什么是行间距? 古时候我们使用印刷机来出来文字.印刷出来的每个字,都位于独立的一个块中. 行间距,即传说中控制两行文字垂直距离的东东.在CSS中,line-height被用来控制行与行之间垂直距离. ...
- node.js的安装与第一个hello world、node.js的初始化
1.下载node.js文件 2.windows下点击安装 重复下一步即可 3.编辑工具 EditPlus编辑器 4.新建保存目录的文件夹,并新建一个文本文档 5.打开EditPlus编辑器 打开 ...
- ubuntu虚拟化平台libvrit-bin
http://download.cirros-cloud.net/0.3.5/ 下载 cirros-0.3.5-x86_64-disk.img 因为 KVM(准确说是 Libvirt)默认不接受远程管 ...