当前位置: 首页 > news >正文

JS之刷刷

实现一个函数 minBy(array, iteratee),该函数在遍历 array 后,根据 iteratee 的返回值找到最小值的元素。

这道题虽然思路很简单,就是按照应用itreratee然后排序,但是有一些细节需要注意

  • 做空值判断断言处理的时候需要将 null 和 undefined 都包含(但是这道题不做特殊处理下面也包含了)
  • 将iteratee作用在array元素上有时候会是undefined,那么就需要做判断是否纳入考虑
  • 如果最后 minIndex 还是初始的哨兵值的话,就返回 undefined
export default function minBy(array, iteratee) {// if (!array || array.length === 0) return undefined// 注意特判let min ;let mini = -1;for (let i=0;i<array.length;i++){const val = iteratee(array[i])if ( val === undefined ) continueif(mini === -1 || val<min){mini = i;min = val;}}if (mini===-1) return undefinedreturn array[mini];
}

事件循环(宏任务、微任务、渲染帧任务)

  • Promise里面的是同步代码,遇到resolve或reject放到微任务里面异步、去找then和catch
const promise = new Promise((resolve, reject) => {console.log(1)resolve()console.log(2)
})
promise.then(() => {console.log(3)
})
console.log(4)
  • 1 2 4 3

Implement a function that performs a recursive, in-place quick sort. The function should take in an array of integers. The output should be an array with the input sorted in ascending order.

快速排序

  • 三路快排:分治、归并。在每段当前区间,将小与当前 pivot (默认是左边)的值排在左边,大于的排右边,那么中间的就是确定的等于的(和插入排序一样都是将无序的分为已定的有序的以及待排的无序的),然后接着对左右两边无序的排序,最后归并(其实也不用归了,因为是直接在arr绝对索引上改的)返回 arr
export default function quickSort(arr,left=0,right=arr.length-1) {if(left>=right) return arr;let lt = left;let gt = right;let pivot = arr[left];let i = left+1;while(i<=gt){if(arr[i]<pivot){[arr[lt],arr[i]]=[arr[i],arr[lt]];lt++;i++;}else if(arr[i]>pivot){[arr[i],arr[gt]]=[arr[gt],arr[i]];gt--;}else{i++;}}quickSort(arr,left,lt-1);quickSort(arr,gt+1,right);return arr;
}

实现一个 useBoolean Hook,用于管理布尔状态,并提供额外的便捷实用方法。

写React自定义Hook管理状态(嵌套 useState 这个Hook钩子)

  • 别忘记初始化 = false
import { useState } from 'react'
export default function useBoolean(initialValue = false) {const [value, setValue] = useState(initialValue);const setTrue = () => setValue(true);const setFalse = () => setValue(false);const toggle = () => setValue(v => !v);return { value, setTrue, setFalse, toggle };
}
http://www.xdnf.cn/news/1396747.html

相关文章:

  • Redis-数据类型的常用操作命令
  • 将LLM模型“钉”在电路板上:用电阻矩阵实现物理推理引擎
  • 【ASP.NET Core】双Token机制在ASP.NET Core中的实现
  • DETR:用Transformer革新目标检测的新范式
  • 基于物联网设计的园林灌溉系统(华为云IOT)_274
  • 从单机到分布式:Python 爬虫架构演进
  • 嵌入式Linux学习 - 数据库开发
  • 系统集成项目管理工程师第十二章:执行过程组全解析
  • 操作系统上的Docker安装指南:解锁容器化新世界
  • 进制转换问题
  • Tomcat 企业级运维实战系列(五):Tomcat 优化和安全加固
  • 简易TCP网络程序
  • 250830-Docker从Rootless到Rootful的Gitlab镜像迁移
  • 【Linux】网络安全管理:Netfilter、nftables 与 Firewalld | Redhat
  • Pmp项目管理方法介绍|权威详解与实战指南
  • 【超全汇总】MySQL服务启动命令手册(Linux+Windows+macOS)(上)
  • MYSQL速通(3/5)
  • Linux 830 shell:expect,ss -ant ,while IFS=read -r line,
  • 构建AI智能体:十八、解密LangChain中的RAG架构:让AI模型突破局限学会“翻书”答题
  • Python自定义函数形式参中的*args、**kwargs、*和/
  • STM32G474 IAP 双bank升级的坑
  • WebStorm无法识别@下的文件,但是可以正常使用
  • 【后端数据库】MySQL 索引生效/失效规则 + 核心原理
  • 腾讯云OpenCloudOS 9系统部署OpenTenBase数据库详细教程
  • 【云原生】Docker 搭建Kafka服务两种方式实战操作详解
  • php连接rabbitmq例子
  • 【序列晋升】21 Spring Cloud Gateway 云原生网关演进之路
  • 卷积神经网络项目:基于CNN实现心律失常(ECG)的小颗粒度分类系统
  • HAProxy 负载均衡全解析:从基础部署、负载策略到会话保持及性能优化指南
  • docker命令(二)