一、面试80%都要问的数组去重

  数组去重的方式有多种,其实面试中主要是想靠对对象的理解。还记得我第一次去面试的时候,去重的时候用了2个for循环。

//1循环一次 
var arr1 = [1,2,3,44,44,11,2,3,333,3,3];
function removeRepeat(arr){
var removeArr = [],obj = {};
for(var i = 0, l = arr.length; i < l; i++){
if(!obj[arr[i]]){
removeArr.push(arr[i]);
obj[arr[i]] = 1;
}
};
return removeArr;
}
var singleArr = removeRepeat(arr1);
console.log(singleArr); //[1, 2, 3, 44, 11, 333]
 function remove2(arr){
return Array.from(new Set(arr));
}
var single2 = remove2(arr1);
console.log(single2) //[1, 2, 3, 44, 11, 333] es6 语法 其实问数组的去重主要是考上面一种思维方式

二、返回字符串中字符出现次数最多的那字符

var str = "abbcccddddfffffgggggg";

    function maxNum(str){

        if(str.length <= 1){
return str;
} var a1 = str.split(''),obj = {},result = [];
//利用上面一个数组去重的思想
for(var k = 0, l = a1.length; k < l; k++){
if(!obj[a1[k]]){
obj[a1[k]] = 1;
}else {
obj[a1[k]] += 1;
};
} var num = 0, word = "";
for(var item in obj){
if(obj[item] > num){
num = obj[item];
word = item;
}
}
return word;
}
var w = maxNum(str);
console.log(w); //g

三、排序算法(排序算法的种类太多)

1.冒泡排序

 var a3 = [1,4,2,90,3,4];

    for(var i = 0, l = a3.length; i < l - 1; i++){
for(var j = i + 1; j < l; j++){
if(a3[i] > a3[j]){
var temp = a3[i];
a3[i] = a3[j];
a3[j] = temp;
}
}
}
console.log(a3); //[1, 2, 3, 4, 4, 90]

2.选择排序

var a3 = [1,4,2,90,3,4];
for(var j = 0, l = a3.length; j < l; j++){
for(k = l; k > j; k--){
if(a3[j] > a3[k]){
var temp = a3[j];
a3[j] = a3[k];
a3[k] = temp;
}
}
}
console.log(a3); ////[1, 2, 3, 4, 4, 90]
//跟冒泡排序的思维有点像,只是一直跟最后一个比,这样一轮下来,就排完序了。

三、不借助中间变量交换2个变量的值

 var a = 4,b = 5;
function change(a,b) {
b = b - a;
a = a + b;
b = a - b;
return [a,b];\
}
console.log(change(a,b)) //思维方式不错。反正第一次的时候,没有想到 [5,4]

四、未完待续.

js中常见算法的更多相关文章

  1. JS中常见算法问题

    JS中常见算法问题 1. 阐述JS中的变量提升(声明提前) 答:将所有的变量提升当当前作用域的顶部,赋值留在原地.意味着我们可以在某个变量声明前就使用该变量. 虽然JS会进行变量提升,但并不会执行真正 ...

  2. js中常见的问题

    js中常见的问题 原文链接 1.js获取select标签选中的值 原生js var obj = document.getElementByIdx_x(”testSelect”); //定位id var ...

  3. JS中常见的几种报错类型

    1.SyntaxError(语法错误) 解析代码时发生的语法错误 var 1a; //Uncaught SyntaxError: Invalid or unexpected token 变量名错误 c ...

  4. JS:JS中常见的 “函数名 is not a function” 错误

    js中常见的错误,例如Uncaught TypeError: x is not a function 其原因除了函数本身有错之外,还有一种很奇怪的情况:函数本身没有错,但是运行时就是不能正常运行.这种 ...

  5. JS中的算法与数据结构——排序(Sort)(转)

    排序算法(Sort) 引言 我们平时对计算机中存储的数据执行的两种最常见的操作就是排序和查找,对于计算机的排序和查找的研究,自计算机诞生以来就没有停止过.如今又是大数据,云计算的时代,对数据的排序和查 ...

  6. JS中常见设计模式总结

    github: https://github.com/14glwu/FEInterviewBox/tree/master/JS%E8%AE%BE%E8%AE%A1%E6%A8%A1%E5%BC%8F ...

  7. JS中的算法与数据结构——排序(Sort)

    排序算法(Sort) 引言 我们平时对计算机中存储的数据执行的两种最常见的操作就是排序和查找,对于计算机的排序和查找的研究,自计算机诞生以来就没有停止过.如今又是大数据,云计算的时代,对数据的排序和查 ...

  8. js中常见的数据加密与解密的方法

    加密在我们前端的开发中也是经常遇见的.本文只把我们常用的加密方法进行总结.不去纠结加密的具体实现方式(密码学,太庞大了). 常见的加密方式 常见的加密算法基本分为这几类, 线性散列算法(签名算法)MD ...

  9. Js中常见的内存泄漏场景

    常见的内存泄漏场景 内存泄漏Memory Leak是指程序中已动态分配的堆内存由于疏忽或错误等原因程序未释放或无法释放,造成系统内存的浪费,导致程序运行速度减慢甚至系统崩溃等严重后果.内存泄漏并非指内 ...

随机推荐

  1. MAC中VMware Fusion 的VMTools安装

    题记:这几天在做SDN方面研究,需要装mininet,https://github.com/mininet/mininet/wiki/Introduction-to-Mininet,按照这个教程装好, ...

  2. vmware虚拟机中的系统(例如kali),输入内容有延迟和卡顿的解决方案

    实际上是因为内存在vmware里设置小了,设置得大点即可, 比如我的kali之前是2gb,然后之前倒是没出过这种问题,但是这次更新系统后可能出了一些问题就变得卡了, 所以我就把kali的内存从2gb调 ...

  3. 工作总结 vue 城会玩

    用了vue2.0,vuex, vue-router等较新的技术,完成了城会玩这个项目,过程中发现自己许多不足,也得到很多人帮助,特别是有些困难的技术点.现在项目上线了,在此做一个整理和总结. 1.ke ...

  4. [webpack]--webpack 如何解析代码模块路径

    前言 webpack是如何解析代码模块路径 webpack 中有一个很关键的模块 enhanced-resolve 就是处理依赖模块路径的解析的,这个模块可以说是 Node.js 那一套模块路径解析的 ...

  5. python通讯录系统

    ---恢复内容开始--- 对于一般的通讯录系统,主要有两个参数:姓名和电话号码,所以可以利用python编程里面的字典来进行建立之间的所属关系, 可以利用以下代码简单实现: print('|--- 欢 ...

  6. NO 18---- webpack 4.x 使用遇到的问题以及开发配置

    最近在项目中用webpack的过程中老是出现问题,很是纳闷,按理说一直这样使用没有问题啊,经过我研究后发现,是因为在webpack更新到4.x之后,操作方式与之前相比变化很大.而我们使用npm默认安装 ...

  7. Aria2 Linux 完整安装及使用教程

    Aria2 嘛,主要是用来离线下载,功能强大,支持 http/https 直链.ftp.电驴.磁力链接等等,且可以跨平台使用,配合网页端操作,简直是一代下载神器. 安装 Debian/Ubuntu: ...

  8. centos7以上安装python3,一条命令搞定。

    直接复制下面的命令就搞定 yum install python34 python34-pip python34-setuptools 使用方法: python3 ---.py pip3 install ...

  9. k8s环境搭建--基于minik8s方法

    minik8s 安装 关闭selinux.开启ipv6 sudo bash selinux_ipv6.sh 下载kubectl和minikube 下载minikube,因为国外的源被墙了,所以只能用阿 ...

  10. kuberentes 源码编译安装

    下载源码 git clone https://github.com/kubernetes/kubernetes && cd kubernetes # 切换版本分支 git checko ...