前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >js 编程题笔记

js 编程题笔记

作者头像
心念
发布2023-01-11 20:53:10
8480
发布2023-01-11 20:53:10
举报
文章被收录于专栏:前端心念前端心念

提取url后面的参数

代码语言:javascript
复制
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
复制
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
复制
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
复制
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
复制
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
复制
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
复制
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 删除。

本文参与?腾讯云自媒体分享计划? ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 提取url后面的参数
  • 根据id排序对象数组,并返回name
  • 判断回文字符串
  • 找出数组中出现次数最多的
  • 手写防抖函数
  • 数组去重1
  • 数组去重2
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
http://www.vxiaotou.com