首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >js 编程题笔记

js 编程题笔记

作者头像
心念
发布于 2023-01-11 12:53:10
发布于 2023-01-11 12:53:10
97300
代码可运行
举报
文章被收录于专栏:前端心念前端心念
运行总次数:0
代码可运行

提取url后面的参数

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
1    const url = "http://localhost:1999/api/article/query?category=all&pageNum=1&pageSize=5"
2
3    const getParams = (url)=>{
4        //提取问号后面的部分,并分割参数
5        let paramsList = url.split("?")[1].split("&")
6        
7        const params = {}
8
9        //将参数再次分割,并放进对象
10        paramsList.forEach(item=>{
11            const [key,value] = item.split("=")
12
13            params[key]=value
14        })
15       return params
16    }
17
18    
19    console.log(getParams(url));
20    //{"category": "all","pageNum": "1","pageSize": "5"}

根据id排序对象数组,并返回name

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
1// JavaScript;
2// 调用示例
3const source = [
4  { id: 4, name: "test1" },
5  { id: {}, name: "ssdf" },
6  "test",
7  { id: () => {}, name: "sf" },
8  { id: "6", name: "test3" },
9  { id: 6, name: "test4" },
10  { id: 7, name: "test7" },
11  { id: 2, name: "test2" },
12  { name: "sf" },
13  {},
14];
15
16function filterSort(source) {
17  //   过滤数组
18  let newArr = source.filter((item) => item.id && typeof item.id === "number");
19  //   排序
20  newArr = newArr.sort((a, b) => {
21    return a.id - b.id;
22  });
23  // 返回name
24  newArr = newArr.map((item) => item.name);
25  console.log(newArr);
26  return newArr;
27}
28
29filterSort(source);
30// 输出结果如下
31//   ("test2", "test1", "test4", "test7")

判断回文字符串

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
1const isReverseStr = (str) => {
2  // 先忽略掉字母大小写
3  const toStr = str.toLowerCase();
4  // 将字符串转为数组后颠倒,再转回字符串
5  const reverseStr = toStr.split("").reverse().join("");
6  // 和原字符串做对比
7  return reverseStr === toStr;
8};
9isReverseStr("121");

找出数组中出现次数最多的

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
1const findMax = (arr) => {
2  // 定义一个对象用来计数
3  const obj = {};
4  // 开始计数,没有的就=1,有的就++
5  arr.forEach((item) => {
6    if (!obj[item]) {
7      obj[item] = 1;
8    } else {
9      obj[item]++;
10    }
11  });
12
13  //   找出出现次数最大的数
14  let maxNum = 0;
15  for (const i in obj) {
16    if (obj[i] > maxNum) {
17      maxNum = obj[i];
18    }
19  }
20
21  //   输出对应的key
22  for (const i in obj) {
23    if (obj[i] === maxNum) {
24      return i;
25    }
26  }
27};
28
29console.log(findMax([1, 2, 44, 44, 2, 2, 44, 12, 44, 12, 12, 33]));

手写防抖函数

利用了闭包

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
1const debounce = (fn, delay) => {
2  let time = null;
3
4  return () => {
5    if (time) {
6      clearTimeout(time);
7    }
8    time = setTimeout(fn, delay);
9  };
10};

数组去重1

new Set() 真的是数组去重界的天花板

利用Set不能接收重复数据的特点

再利用展开运算符可以把一个类数组转为真实数组的特点

秒去重

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
1const arr = [1,9,8,8,7,2,5,3,3,3,2,3,1,4,5,444,55,22];
2
3  function noRepeat(arr){
4 
5    const newArr = [...new Set(arr)]; //利用了Set结构不能接收重复数据的特点
6 
7    return newArr
8 
9  }
10 
11 console.log(noRepeat(arr)) 
12 //[1, 9, 8,7, 2,5, 3, 4, 444, 55 ,22]

数组去重2

利用了indexOf只能查找到第一个的下标 机制

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
1const arr = [1, 9, 8, 8, 7, 2, 5, 3, 3, 3, 2, 3, 1, 4, 5, 444, 55, 22];
2
3function noRepeat(arr) {
4  return arr.filter((item, index) => {
5    console.log(arr.indexOf(item), index);
6    return arr.indexOf(item) === index;
7  });
8}
9
10console.log(noRepeat(arr));
11//[1, 9, 8,7, 2,5, 3, 4, 444, 55 ,22]
12
本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
最全 JavaScript Array 方法 详解
我们在日常开发中,与接口打交道最多了,前端通过访问后端接口,然后将接口数据二次处理渲染到页面当中。 二次处理的过程是 考验 Coder 对 Array 是否熟练 以及 在 何种 场景下使用哪种方法处理最优 。 小编,在最近开发中就遇到了 Array 问题, 在处理复杂的业务需求时,没想到Array 有类似的方法,然后将方法 组合起来解决当下问题。
程序员海军
2021/10/11
1.2K0
最全 JavaScript Array 方法 详解
牛客网js题库正解(41-60)
41、dom 节点查找 function commonParentNode(oNode1, oNode2) { for(;oNode1;oNode1 = oNode1.parentNode) { console.log(oNode1) if (oNode1.contains(oNode2)) { return oNode1 } } } 42、41直接跳到43,没有42题 43、修改this指向 function bind
编程内马尔
2022/11/15
3800
爆 肝 一 周 总 结 最全 JavaScript Array 方法详解
我们在日常开发中,与接口打交道最多了,前端通过访问后端接口,然后将接口数据二次处理渲染到页面当中。
程序员海军
2022/02/15
8860
爆 肝 一 周 总 结 最全 JavaScript Array 方法详解
Javascript 常见的操作数组的方法
解释: arr 表示原数组; prev 表示上一次调用回调时的返回值,或者初始值 init; cur 表示当前正在处理的数组元素; index 表示当前正在处理的数组元素的索引,若提供 init 值,则索引为0,否则索引为1; init 表示初始值
何处锦绣不灰堆
2020/05/28
5590
数组去重和获取重复元素(普通数组和嵌套对象数组)
关于js的数组去重和获取重复元素,在项目开发中经常会遇到,这里提供个实现思路以供参考。
用户4396583
2024/10/08
9660
JavaScript专题(二)数组去重,会就要会的理直气壮
如果数组中有NaN,你又正好需要判断数组是否有存在NaN,这时你使用indexOf是无法判断的,你必须使用includes这个方法。
全栈程序员站长
2022/07/04
4410
js遍历数组的几种方法
2、map:支持return,相当与原数组克隆了一份,把克隆的每项改变了,也不影响原数组
jamesjiang
2022/11/20
1.5K0
js遍历数组的几种方法
10个常见的前端手写功能,你全都会吗?
万丈高楼平地起,地基打的牢,才能永远立于不败之地。今天给大家带来的是10个常见的 JavaScript 手写功能,重要的地方已添加注释。有的是借鉴别人的,有的是自己写的,如有不正确的地方,欢迎多多指正。
猿来是前端
2022/09/19
3270
10个常见的前端手写功能,你全都会吗?
万丈高楼平地起,地基打的牢,才能永远立于不败之地。今天给大家带来的是10个常见的 JavaScript 手写功能,重要的地方已添加注释。有的是借鉴别人的,有的是自己写的,如有不正确的地方,欢迎多多指正。
CRMEB商城源码
2022/07/20
4720
收藏好了,JS开发须知道的41个小技巧
链接:https://juejin.im/post/6854573212890562573
coder_koala
2020/11/10
5920
收藏好了,JS开发须知道的41个小技巧
手撕常见JS面试题
高阶函数实现AOP(面向切面编程) Function.prototype.before = function (beforefn) { let _self = this; // 缓存原函数的引用 returnfunction () { // 代理函数 beforefn.apply(this, arguments); // 执行前置函数 return _self.apply(this, arguments); // 执行原函数
helloworld1024
2022/10/14
6170
这些js手写题对我这个菜鸟来说写不出来
请使用最基本的遍历来实现判断字符串 a 是否被包含在字符串 b 中,并返回第一次出现的位置(找不到返回 -1)。
helloworld1024
2022/09/25
7070
typescript学习笔记
enum关键字定义一组枚举值,如果没赋值默认从0开始用下标作为值,如果第一个被赋值那么从第一个开始累加。
心念
2023/01/11
2420
JS中数组去重的几种方法分享
数组去重是工作中常用的小技巧,一般的方法此处也不列举了,还是有很多的,如双层循环判断是否相等,或新建数组比较再push等等,需要注意的是,使用splice方法移除元素时,有可能会导致数组塌陷问题,需要处理一下。
用户4831957
2021/04/09
1.1K0
JS数组遍历的几种方法
    最简单的一种循环遍历方法,也是使用频率最高的一种,可优化     循环过程中支持修改索引(修改 i)
全栈程序员站长
2022/09/14
2.2K0
牛客网js题库正解 (21-40题)
要求在Number对象的原型对象上添加"_isPrime"函数,该函数判断调用的对象是否为一个质数,是则返回true,否则返回false。
编程内马尔
2022/11/15
3430
前端一面必会手写面试题(边面边更)4
函数柯里化概念: 柯里化(Currying)是把接受多个参数的函数转变为接受一个单一参数的函数,并且返回接受余下的参数且返回结果的新函数的技术。
helloworld1024
2023/01/06
3580
9种JS数组去重的高阶方法思路,值得借鉴
一般的方法此处也不列举了,还是有很多的,如双层循环判断是否相等,或新建数组比较再push等等,需要注意的是,使用splice方法移除元素时,有可能会导致数组塌陷问题,需要处理一下。
前端达人
2021/06/16
1.4K0
JS数组奇巧淫技
前段时间接手一个项目,逻辑晦涩难懂,代码庞大冗余,上手极其困难。很大的原因就是数组方法使用不熟练,导致写出了很多垃圾代码,其实很多地方稍加改动就可以变得简单高效又优雅。因此我在这里总结下数组的常用方法和奇巧淫技(奇巧淫技主要是reduce~)。
刘小夕
2020/07/15
1.2K0
JS数组奇巧淫技
2022必会的前端手写面试题
要求写出 区号+8位数字,或者区号+特殊号码: 10010/110,中间用短横线隔开的正则验证。 区号就是三位数字开头。
buchila11
2022/05/01
8210
相关推荐
最全 JavaScript Array 方法 详解
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档