博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
常见的js算法面试题收集,es6实现
阅读量:5075 次
发布时间:2019-06-12

本文共 2610 字,大约阅读时间需要 8 分钟。

1、js 统计一个字符串出现频率最高的字母/数字

let str = 'asdfghjklaqwertyuiopiaia';const strChar = str => {    let string = [...str],        maxValue = '',        obj = {},        max = 0;    string.forEach(value => {        obj[value] = obj[value] == undefined ? 1 : obj[value] + 1        if (obj[value] > max) { max = obj[value] maxValue = value } }) return maxValue; } console.log(strChar(str)) // a

2、数组去重

2.1、forEach
let arr = ['1', '2', '3', '1', 'a', 'b', 'b'] const unique = arr => { let obj = {} arr.forEach(value => { obj[value] = 0 }) return Object.keys(obj) } console.log(unique(arr)) // ['1','2','3','a','b']
2.2、filter
let arr = ['1', '2', '3', '1', 'a', 'b', 'b'] const unique = arr => { return arr.filter((ele, index, array) => { return index === array.indexOf(ele) }) } console.log(unique(arr)) // ['1','2','3','a','b']
2.3、set
let arr = ['1', '2', '3', '1', 'a', 'b', 'b'] const unique = arr => { return [...new Set(arr)] } console.log(unique(arr)) // ['1','2','3','a','b']

3、翻转字符串

let str ="Hello Dog";const reverseString = str =>{    return [...str].reverse().join("");}console.log(reverseString(str))   // goD olleH

4、数组中最大差值

4.1、forEach
let arr = [23, 4, 5, 2, 4, 5, 6, 6, 71, -3];const difference = arr => {    let min = arr[0],        max = 0;    arr.forEach(value => {        if (value < min) min = value        if (value > max) max = value    })    return max - min ; } console.log(difference(arr)) // 74
4.2、max、min
let arr = [23, 4, 5, 2, 4, 5, 6, 6, 71, -3];const difference = arr => {    let max = Math.max(...arr),        min = Math.min(...arr);    return max - min ;}console.log(difference(arr)) // 74

5、不借助临时变量,进行两个整数的交换

5.1、数组解构
let a = 2,    b = 3;    [b,a] = [a,b]    console.log(a,b)   // 3 2
5.2、算术运算(加减)

输入a = 2,b = 3,输出 a = 3,b = 2

let a = 2,    b = 3;const swop = (a, b) => {    b = b - a;    a = a + b;    b = a - b;    return [a,b];}console.log(swop(2,3)) // [3,2]
5.3、逻辑运算(异或)
let a = 2,    b = 3;const swop = (a, b) => {    a ^= b; //x先存x和y两者的信息    b ^= a; //保持x不变,利用x异或反转y的原始值使其等于x的原始值    a ^= b; //保持y不变,利用x异或反转y的原始值使其等于y的原始值    return [a,b];}console.log(swop(2,3)) // [3,2]

6、排序 (从小到大)

6.1、冒泡排序
let arr = [43, 32, 1, 5, 9, 22];const sort = arr => {    let res = []    arr.forEach((v, i) => {        for (let j = i + 1; j < arr.length; j++) {            if (arr[i] > arr[j]) { [arr[i],arr[j]] = [arr[j],arr[i]] } } }) return arr } console.log(sort(arr)) // [1, 5, 9, 22, 32, 43]

结语

持续更新,持续更新...

错漏之处,敬请斧正

有更多更好的js算法面试题,还望伙伴们积极推荐

作者:陆丰轮子
链接:https://juejin.im/post/5a7aaf745188257a5a4c9a39
来源:掘金
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。

转载于:https://www.cnblogs.com/huangwentian/p/8601918.html

你可能感兴趣的文章
用状态机实现键盘消抖【转】
查看>>
CSS魔法堂:你真的懂text-align吗?
查看>>
[译]c++ web编程:写出你的CGI程序
查看>>
python小数据池,代码块的深入剖析。
查看>>
CFLoatEdit
查看>>
thinkphp3.2
查看>>
appstore不能登陆
查看>>
关于mysql的wait_timeout参数 设置不生效的问题
查看>>
spring boot 之@JsonView 简单介绍
查看>>
mysql 查看正在运行的进程
查看>>
Map,Hashmap,LinkedHashMap,Hashtable,TreeMap
查看>>
笔记4 | 轻量级的储存:SharedPreferences的一个例子
查看>>
【转】Jmeter和LR上传文件和下载
查看>>
201623172017-2018-1 《程序设计与数据结构》第六周学习总结
查看>>
maven转gradle以及遇到的问题
查看>>
c++11 thread (目前我使用的ZThread库)
查看>>
王之泰201771010131《面向对象程序设计(java)》第四周学习总结
查看>>
时间序列(一):上手体验
查看>>
数据结构-有序链表的合并
查看>>
安装jar包到本地仓库
查看>>