- 博客(69)
- 收藏
- 关注
原创 Harness Engineering 实战:从前端开发视角,让AI Agent真正落地生产
摘要: 从前端转型AI Agent开发的工程师发现,工程化思维比模型能力更重要。Agent上线后常因缺乏业务规则校验、工具链容错和状态管理而崩溃,这与前端开发中的表单验证、接口容错和状态管理问题类似。Harness Engineering本质是将前端工程化(如ESLint、CI/CD)迁移到AI系统,通过上下文架构、工具系统、任务编排、反馈闭环和架构护栏五层体系确保稳定性。模型能力提升无法解决工程失控,必须建立自动化验证和约束机制,如同前端项目依赖工程化体系保障质量。
2026-05-28 10:33:16
538
原创 零复杂配置!用Claude Code接入GLM5.1,我从零搭成了一个健身APP(全过程复盘)
摘要: 本文分享了作者利用AI工具链快速开发健身APP的全过程。通过ChatGPT梳理需求并生成UI设计提示词,使用Pixso一键生成设计稿并导出代码。开发阶段采用Claude Code接入GLM5.1模型,实现自然语言驱动的全栈开发:前端用Vue3+Vite,后端用Express,数据库选MongoDB,结合GitHub Actions实现测试自动化。整个过程从需求分析到上线仅耗时极短,AI辅助显著提升了开发效率,尤其适合个人开发者快速实现全栈项目。关键工具包括Claude Code、GLM5.1、Pix
2026-04-15 21:37:16
1705
原创 面试必懂!虚拟DOM到底是个啥
本文深入浅出地讲解了虚拟DOM的核心概念、工作原理及在Vue中的应用。虚拟DOM本质上是用JavaScript对象模拟真实DOM结构,通过对比新旧虚拟DOM差异并批量更新真实DOM来提高性能。其核心价值在于实现声明式编程和跨平台开发,而非单纯提升性能。文章澄清了常见误区,指出虚拟DOM在单次简单操作中并不比直接操作DOM更快,其优势主要体现在批量更新和最小化DOM操作上。同时详细解析了Vue对虚拟DOM的优化策略,如模板编译优化和key的作用,并通过实例展示了虚拟DOM如何简化开发流程,帮助开发者建立数据驱
2026-03-31 09:38:35
393
原创 低代码组件通信避坑指南:从项目问题到落地优化
本文总结了低码大屏项目中组件通信的常见问题与优化方案。主要问题包括通信内容混乱、性能消耗严重、逻辑维护困难及安全风险等。针对这些问题,文章提出了分通信方式的优化策略:Props传递聚焦明确父子关系,禁止多层透传并采用动态绑定;eventBus规范跨层级通信,统一事件格式并自动清理监听;Pinia状态管理按业务域拆分模块,隔离组件状态。优化后实现了事件格式统一、性能提升80%、排查效率提高等显著效果,为低码项目提供了可落地的组件通信优化方案。
2026-03-09 16:45:00
471
1
原创 用户体验的魔鬼细节:为什么你的搜索联想总是“张冠李戴“?
搜索联想功能混乱问题的根源在于异步请求的竞态条件,导致旧请求结果覆盖最新输入。解决方案包括: 使用AbortController取消过期请求(推荐方案) 请求序号标记法(兼容旧浏览器) 防抖+取消组合方案 进阶优化建议:添加输入缓存策略和加载状态反馈。最终给出生产级搜索联想组件实现方案,解决"后发先至"导致的用户体验问题。
2026-03-05 14:15:00
650
原创 实战拆解低代码大屏:从设计到运行的核心实现逻辑
本文深入解析了低代码大屏平台的核心实现逻辑,从三大设计原则(设计态与运行态分离、可视化拖拽配置、数据源管理)到架构设计(数据流架构和组件系统架构),详细阐述了低代码平台如何通过JSON配置驱动页面生成。文章重点介绍了关键技术实现,包括拖拽功能封装、画布布局系统、基于JSON Schema的动态配置面板以及统一数据源管理。作者指出,低代码平台的本质是"用配置描述页面,用代码解析配置",强调理解底层架构对开发者的重要性,并分享了项目实践中的具体解决方案。
2026-03-04 09:37:06
367
原创 语音AI三部曲:唤醒→识别→播报,我是怎么让大屏“能说会道“的
本文介绍了在低码平台中为数据可视化大屏增加语音交互功能的实现方案。系统采用模块化设计,包含语音唤醒、语音识别和语音合成三大核心模块。语音唤醒模块通过WebSocket实现低延迟的关键词检测;语音识别模块采用双协议架构适配不同厂商服务;语音合成模块将处理结果转化为语音反馈。文章详细阐述了各模块的技术原理和实现代码,包括状态机设计、会话管理和异常处理等关键技术点,为开发语音交互功能提供了完整的解决方案。
2026-03-03 15:03:37
570
原创 低码项目接入AI的奇妙之旅:让数据展示更智能
本文介绍了如何为低码平台接入AI能力,实现自然语言驱动的智能数据展示。核心方案包括:1)基于Pinia的对话状态管理;2)智能数据解析,支持多种格式提取;3)流式处理实现实时反馈;4)多模态数据展示(图表/Markdown/URL等);5)智能布局计算。技术亮点在于灵活的JSON提取机制、实时交互体验和自适应布局。应用场景涵盖销售分析、库存管理等业务场景,用户可通过自然语言指令获取智能数据展示。未来将扩展更智能的自然语言理解、个性化推荐等功能,持续提升低码平台的智能化水平。
2026-03-03 14:25:04
534
原创 救命!Canvas居然能做刮刮乐?复制就用,手残党也能拿捏
其实这玩意儿原理简单到离谱 —— 就像你在奶茶杯上贴了层便利贴,底层是 “再来一杯”(中奖内容),上层是便利贴(遮挡层);你用指甲刮便利贴(鼠标 / 触摸),刮掉的地方就露出底下的字,Canvas 只是把 “便利贴” 换成了像素,把 “指甲” 换成了代码而已~
2026-03-02 11:47:38
813
原创 SSE与WebSocket(WS)深度对比及实战代码解析
SSE与WebSocket选型指南 SSE和WebSocket是两种主流的实时通信技术,各有适用场景。SSE基于HTTP协议,实现单向服务器推送,适合实时通知、监控面板等场景,具有轻量级、自动重连的优势。WebSocket提供全双工通信,支持双向数据传输,适用于在线聊天、多人协作等交互场景,但实现复杂度较高。本文通过Node.js+HTML5的完整代码示例,对比了两者的协议特性、实现方式和适用场景,帮助开发者根据实际需求做出合理选择。对于简单推送场景优先考虑SSE,复杂交互场景则必须使用WebSocket。
2026-02-26 17:26:34
1497
原创 开发常用git命令汇总
本文系统整理了Git版本控制的核心操作指南,包含项目初始化、日常代码管理、分支协作和实用辅助指令四个部分。详细介绍了从git init/clone创建仓库,到add/commit/pull/push的代码提交流程,以及分支创建、合并等协作技巧,最后提供了日志查看、回滚版本等实用指令。文章采用分类讲解方式,每个命令配有使用场景说明和注意事项,特别标注了高频操作和推荐用法,同时包含常见问题的解决方案(如合并冲突处理)。通过这套指南,开发者能够快速掌握Git工作流的关键环节,提升团队协作效率。
2025-11-18 09:05:17
473
原创 面试官:两个用户同时编辑一份数据 “后保存者” 会覆盖 “前保存者”,如何解决?
多人协作系统中常见的“后保存者覆盖前保存者”问题,源于并发编辑时缺乏数据变更校验机制。本文分析三种解决方案:1)乐观锁,通过版本号校验避免冲突;2)悲观锁,编辑前锁定数据;3)版本控制,保留历史修改记录。针对不同场景提供代码实现,包括数据库设计、Java/MyBatis示例及事务处理,帮助开发者有效解决数据覆盖问题。
2025-10-14 09:27:07
909
原创 面试官:Vue3 组件如何嵌入 Vue2 项目?结合实际场景谈操作与优劣(补充 iframe 与 Web Component 方案)
摘要 本文针对Vue2项目中嵌入Vue3组件的需求,补充介绍了两种实用方案:iframe嵌入和Web Component封装。iframe方案适合轻量独立场景,通过原生iframe标签嵌入Vue3组件HTML文件,实现完全环境隔离,配置简单但通信复杂;Web Component方案利用Vue官方工具将Vue3组件封装为标准自定义元素,实现跨框架复用,适合多技术栈场景。两种方案各有优劣:iframe部署灵活但性能损耗较大,Web Component标准化但需处理事件通信。结合此前介绍的@vue/compat和
2025-10-10 09:21:11
1532
原创 面试官:Vue3 组件如何嵌入 Vue2 项目?结合实际场景谈操作与优劣
摘要 本文针对Vue2项目集成Vue3组件的需求,提出两种解决方案: 轻量级兼容方案:使用@vue/compat官方工具,在Vue2项目中直接支持Vue3语法。优点是开发成本低、无需重构,但功能受限,不支持Vue3全部特性。 微前端方案:通过qiankun框架将Vue3组件封装为独立微应用。优点是可完整使用Vue3特性,适合复杂场景,但实现成本较高,需要维护两个独立项目。 技术选型建议:小型过渡采用方案一,复杂需求采用方案二。两种方案均需注意版本兼容性,并做好性能测试。
2025-10-10 09:19:26
2042
原创 面试官:什么是链式调用?怎么自己实现一个链式调用?
文章摘要:链式调用是一种让对象方法连续执行的编程技巧,通过在每个方法末尾返回this(对象自身)实现。以计算器工具为例,演示了创建对象、方法返回this、链式调用的三步实现过程。常见错误包括忘记返回this或返回其他值导致调用链断裂。掌握"方法返回自身"的核心原则,就能轻松实现类似jQuery的链式调用功能。
2025-10-02 14:21:15
513
原创 面试官:手写个 Promise 给我看看
本文详解如何手写 Promise,帮助前端开发者掌握异步编程核心原理。文章首先通过"煮开水→泡咖啡"的示例对比回调地狱和 Promise 链式调用的区别,说明 Promise 的核心价值。随后提供完整的 Promise 实现代码,包含状态管理、resolve/reject 逻辑和 then 方法实现。重点拆解了 Promise 的 5 个关键步骤:创建 Promise 时初始化状态、定义回调函数、执行异步操作;调用 then 方法时注册回调;以及异步操作完成后触发回调的完整流程。通过生活
2025-10-02 10:02:14
979
原创 面试官:canvas绘制越画越卡怎么解决?
本文介绍了三种优化Canvas性能的核心方法:分层绘制将静态与动态内容分离,减少重复渲染;离屏Canvas提前缓存复杂元素,避免实时计算;按需绘制只在内容变化时触发重绘。通过组合使用这些技术,能显著降低CPU/GPU负载,在数据可视化、游戏等场景中实现流畅的60fps渲染。优化关键在于减少不必要的计算和渲染,根据实际需求灵活运用分层、缓存和智能重绘机制。
2025-09-22 13:00:00
1940
原创 一文读懂:Canvas 与 SVG 的核心区别
Canvas和SVG是前端可视化两大核心技术,但存在本质差异:Canvas基于像素绘制,适合动态图形和游戏开发,但缩放会失真且操作复杂;SVG采用矢量描述,支持无限缩放和DOM交互,适合静态图形和复杂图表。关键区别在于Canvas操作像素性能高但不保留图形结构,SVG保留图形结构便于操作但DOM过多时性能下降。选型应遵循场景需求:高频动画选Canvas,交互图形选SVG。理解两者特性差异,能有效提升可视化开发效率。
2025-09-22 07:00:00
1570
原创 深入理解 Vue 插槽:从基础到高级用法
Vue插槽是实现组件灵活复用的核心技术,主要包括三种类型:默认插槽用于基础内容注入,命名插槽实现多位置精准控制,作用域插槽允许子组件向父组件传递数据。通过插槽机制,子组件可定义结构框架,父组件动态注入内容,实现"框架与内容分离"。典型应用场景包括通用组件封装、列表渲染自定义和组件内容扩展。使用时需注意简写语法、插槽props的只读性以及合理设置备用内容。插槽技术大幅提升了Vue组件的复用性和灵活性。
2025-09-21 09:45:00
1578
原创 vue-router 中 history 与 hash 模式深度对比:原理、差异与选型
摘要: Vue Router 提供 hash 和 history 两种路由模式: hash 模式 基于 URL 的 # 锚点,通过 hashchange 事件实现无刷新导航,兼容性好且无需后端配置,但 URL 含 #,不支持原生锚点; history 模式 利用 HTML5 History API,URL 更简洁美观,但需后端支持(所有路径指向 index.html),兼容性仅限现代浏览器。 关键差异:URL 格式、兼容性、部署要求及 SEO 友好性。history 模式需 Nginx/Apache 等服务
2025-09-21 04:00:00
1829
原创 深入理解 vue-router 路由守卫:分类、用法与实战
Vue-Router路由守卫全面解析 摘要:本文深入讲解Vue-Router三大类路由守卫的使用方法。全局守卫(beforeEach/beforeResolve/afterEach)控制整个应用路由导航,常用于权限验证;路由独享守卫(beforeEnter)针对单个路由进行特殊控制;组件内守卫(beforeRouteEnter/Update/Leave)在组件层面处理导航逻辑。文章详细分析了各类守卫的执行时机、参数用法和实际应用场景,如登录验证、异步数据加载和页面跳转拦截等,帮助开发者掌握路由导航控制的核心
2025-09-20 09:00:00
1917
原创 深入理解 MVC 与 MVVM:架构模式对比及实践应用
MVC与MVVM架构模式对比及适用场景分析 MVC(Model-View-Controller)和MVVM(Model-View-ViewModel)是两种主流的软件架构模式。MVC强调分层解耦,通过Controller协调Model与View的交互,适用于传统后端开发;MVVM则通过ViewModel实现数据双向绑定,更适合现代前端框架(如Vue、React)。两者核心差异在于:MVC依赖Controller手动转发指令,可能导致代码臃肿;MVVM利用数据绑定自动同步视图与数据,简化开发流程但学习成本较高
2025-09-20 00:45:00
904
原创 深入Vue内核:v-model源码解析,从语法糖到实现逻辑
本文从源码角度解析了Vue中v-model双向数据绑定的实现原理。v-model本质上是v-bind:value和v-on:input的语法糖组合,通过编译阶段将模板转换为"属性绑定+事件监听"的渲染函数,在运行时借助响应式系统实现数据与视图的双向同步。Vue2根据不同表单元素类型生成对应的绑定逻辑,处理修饰符如.lazy、.number等;而Vue3重构了实现方式,支持组件多v-model并优化了响应式系统。理解v-model的底层机制有助于开发者更灵活地使用这一重要特性。
2025-09-19 12:45:00
1698
原创 Vue 中 v-for 与 v-if 为何不建议同用?不同版本执行顺序解析
摘要:Vue官方不建议在同一元素上同时使用v-for和v-if指令,主要原因包括:1)Vue2与Vue3执行顺序不同,Vue2中v-for先执行,Vue3中v-if先执行且会导致语法错误;2)性能损耗,Vue2会先循环生成所有节点再做条件判断;3)逻辑不清晰易引发歧义。正确做法是:需要过滤列表项时先用计算属性处理数据再循环;需要控制整个列表显示时,将条件判断放在循环的父容器上。这种分离写法能提升性能并增强代码可读性。
2025-09-19 08:30:00
1313
原创 深入理解 Vue 中 key 的作用:从原理到实践
Vue中的key属性是虚拟DOM节点的唯一标识,在开发中有三大核心作用:1)避免循环渲染中的节点复用错误,应使用唯一ID而非索引作为key;2)提升DOM更新性能,通过key快速定位节点减少不必要的重建;3)强制组件重新渲染,通过改变key触发组件生命周期重置状态。使用时需注意key的唯一性,避免使用索引,推荐字符串或数字类型。理解key的原理能帮助开发者编写更健壮、高效的Vue代码。
2025-09-18 14:00:00
798
原创 解析 Vue3.6 取消虚拟 DOM:技术演进下的必然选择
对于需要自定义渲染器(如适配非 Web 平台)的场景,Vue3.6 提供了新的 “底层渲染 API”,替代了之前基于虚拟 DOM 的渲染逻辑。虽然需要对自定义渲染器进行少量修改,但官方提供了清晰的迁移指南,且新 API 的性能比基于虚拟 DOM 的方案更优。Vue3.6 取消虚拟 DOM,不是 “否定过去”,而是 “面向未来” 的优化。
2025-09-18 09:00:00
1087
原创 深入理解虚拟 DOM(VDOM):原理、优势与应用
要理解虚拟 DOM,首先得从 “真实 DOM” 的痛点说起。真实 DOM(Document Object Model)是浏览器提供的 API,它将 HTML 文档解析成一棵树形结构,每个节点都是一个 DOM 元素对象。我们可以通过 JavaScript 操作 DOM 来更新页面内容,比如修改元素的文本、样式,或者添加 / 删除节点。但真实 DOM 的操作成本非常高:一方面,DOM 节点本身包含大量属性(如parentNodechildNodesstyle等),创建和修改 DOM 会占用较多内存;
2025-09-17 17:15:00
1545
原创 深入理解 Webpack Plugins:从概念到实战应用
如果社区 Plugin 无法满足需求,可以编写自定义 Plugin。一个简单的 Plugin 需满足:是一个 JavaScript 类(或函数);类中必须有apply方法(Webpack 会调用该方法,并传入compiler对象);通过监听 Webpack 钩子事件,执行逻辑。示例:自定义 “构建完成提示” Plugin// 1. 编写自定义 Plugin(可单独放在 plugins/MyNotificationPlugin.js)// 监听 "done" 钩子(构建完成后触发)
2025-09-17 06:15:00
1162
原创 脚本加载失败:面试重难点解析、监控与重试策略
前端脚本加载失败问题解决方案 摘要:本文针对前端开发中脚本加载失败这一常见问题,从面试考点和实际应用两个维度展开分析。首先梳理了脚本加载失败的常见原因(网络问题、路径错误、服务器问题等)及其影响(功能异常、页面渲染问题)。然后提出了三种监控方案:基于浏览器事件监听、Performance API性能分析和第三方监控平台接入。最后详细介绍了资源重试策略,包括固定间隔重试、指数退避重试和智能降级方案,并提供了具体实现代码示例。这些方案能有效提高前端应用的稳定性和用户体验。
2025-09-16 12:15:00
1419
原创 深入解析 Vue3 中 ref 与 reactive 的原理及区别(附源码)
Vue3的ref和reactive是Composition API中的核心响应式工具,两者均基于Proxy实现,但存在关键差异。reactive直接代理对象/数组,支持深度响应式,适合管理复杂数据结构;ref通过容器包装基础类型,需通过.value访问,支持所有数据类型,模板中自动解包。选择方案时,基础类型用ref,对象/数组优先用reactive。ref包装对象时会内部转为reactive,确保嵌套属性响应性。开发者应根据数据类型和场景需求合理选用。
2025-09-16 07:00:00
1114
原创 【面试题——客户端存储 <二>】客户端存储方案:补充高频面试题及解答
本文总结了前端存储相关的面试高频问题,重点覆盖安全性、细节特性和实操场景。安全性方面解析了cookie的安全配置项(httpOnly、secure、SameSite)及localStorage的XSS风险防范措施;细节特性部分对比了cookie的expires与max-age属性、localStorage的浏览器隔离机制及indexedDB的事务特性;实操场景包括实现带过期时间的localStorage、处理存储超限问题和移动端适配技巧。文章还对比了cookie与session、IndexedDB与WebS
2025-09-15 16:00:00
576
原创 【面试题——客户端存储 <一>】localStorage、sessionStorage、cookie 与 indexedDB 的区别
本文对比了前端四种常见存储方案(cookie、localStorage、sessionStorage、indexedDB)的核心差异。从存储容量、生命周期、数据共享范围、服务器交互等维度进行详细分析,指出各自适用场景:cookie适合小容量身份信息(如token),localStorage适合长期缓存(如主题设置),sessionStorage用于临时会话数据(如表单输入),indexedDB则适合存储大量结构化数据(如离线应用)。文章还解析了关键设计逻辑,并附典型面试题解答,帮助开发者深入理解存储方案选择
2025-09-15 07:00:00
1022
原创 < JS事件循环系列【四】> 事件循环补充概念:从执行细节到性能优化
摘要:本文深入探讨了事件循环的补充概念,包括执行上下文、任务队列优先级与requestAnimationFrame。执行上下文是函数执行的基础环境,包含变量对象、作用域链和this绑定,直接影响变量提升和闭包等特性。任务队列优先级在浏览器和Node.js中存在差异,浏览器中微任务优先于动画帧任务和宏任务,而Node.js将宏任务分为6个阶段并引入更高优先级的process.nextTick。requestAnimationFrame作为浏览器专为动画设计的独立任务,在重绘前执行,能有效解决定时器动画的卡顿问
2025-09-14 14:45:00
1867
原创 < JS事件循环系列【三】> 宏任务实战指南:从场景分析到问题解决
本文深入解析宏任务在实战中的四大核心场景:多定时器协同、DOM事件与数据更新协同、fetch请求优先级处理,以及Node.js与浏览器环境的差异问题。通过典型案例分析,揭示了宏任务执行顺序的潜在陷阱,如定时器阻塞、DOM更新延迟、请求回调乱序等,并提供了链式调用、微任务优化、串行请求等解决方案,帮助开发者精准掌握异步场景下的宏任务调度逻辑。
2025-09-14 10:15:00
1053
原创 < JS事件循环系列【二】> 微任务深度解析:从本质到实战避坑
JS微任务是事件循环中优先级最高的异步任务,会在当前宏任务结束后立即执行,阻塞下一个宏任务。常见微任务包括Promise回调、async/await、queueMicrotask和MutationObserver。微任务具有三大执行规则:队列先进先出且会清空、在当前宏任务结束后执行、不阻塞同步代码。相比宏任务,微任务执行更快且优先级更高,主要用于处理轻量级异步操作。理解微任务机制对正确处理异步逻辑至关重要。
2025-09-13 09:45:00
1508
原创 < JS事件循环系列【一】> JS 事件循环:从基础概念到执行逻辑
摘要:JS事件循环是前端开发中的核心概念,解决单线程环境下的异步操作问题。其核心机制包括调用栈(执行同步代码)、任务队列(宏任务和微任务)以及事件循环线程(任务调度)。执行优先级为同步代码>微任务>宏任务,每次执行完一个宏任务后都会先清空微任务队列。通过实例分析可知,理解事件循环能帮助开发者掌握代码执行顺序,避免常见误区如setTimeout(fn,0)并非立即执行等。掌握事件循环机制对深入学习JS异步编程至关重要。
2025-09-13 04:45:00
1153
原创 小白科普:AI 幻觉是什么?怎么避免?
《AI幻觉:现象、成因与应对策略》摘要 随着AI技术广泛应用,"AI幻觉"问题日益凸显,指AI生成看似合理但不符合事实或用户意图的内容。其产生主因包括:训练数据缺陷(错误信息、知识边界限制)、模型架构局限(逻辑推理不足)及推理过程不确定性(随机输出)。为有效应对,用户可采取优化输入(精准提示、多模态输入)、严格验证(交叉检验、时空过滤、溯源追问)、工具辅助(代码验证、专业插件)等策略,同时培养批判思维并了解AI技术原理。通过多维度防范措施,可显著降低AI幻觉带来的风险。
2025-09-12 23:00:00
1099
原创 深入理解 script 标签的 defer 与 async 属性:区别与实际应用
defer和async是script标签的两个重要属性,用于优化脚本加载和执行。defer实现"延迟下载,顺序执行",确保脚本在HTML解析完成后按顺序执行,适合有依赖关系的脚本;async实现"异步下载,立即执行",执行顺序取决于下载速度,适合独立脚本。关键区别在于执行时机和顺序保证。Vue项目中,外部依赖脚本需按场景选择,而单文件组件脚本由构建工具自动优化。理解二者的差异能有效提升页面性能,避免执行顺序错误导致的DOM访问问题。
2025-09-12 07:30:00
1944
原创 CSS 实现 div 水平垂直居中的 8 种实用方法:附代码与原理
本文整理了8种实现div水平垂直居中的方法,涵盖传统与现代解决方案。基础方法包括文本专用的text-align+line-height和需要固定宽高的margin auto+绝对定位;经典方法如绝对定位+负margin;现代方法推荐支持动态宽高的绝对定位+transform、Flex布局和Grid布局。Flex布局通过justify-content和align-items实现居中,代码简洁兼容性好;Grid布局则使用place-items一行代码完成。不同方法各有优缺点,开发者可根据项目需求(如兼容性、动态
2025-09-11 19:15:00
2186
原创 JS 数据去重的 7 种实用方法:附完整代码与原理
本文总结了7种JavaScript数组去重方法,涵盖不同场景需求:1) Set去重(简洁高效,适合简单数据类型);2) indexOf/includes(兼容性好但性能差);3) 对象键名(性能优,需处理类型);4) filter+indexOf(函数式风格);5) Map去重(支持特殊值);6) 对象去重(JSON.stringify或属性比较);7) 排序后相邻比较。每种方法均附代码示例和适用场景分析,帮助开发者根据数据类型、性能需求和兼容性选择最佳方案。特别针对复杂对象去重提供了解决方案,如利用唯一标
2025-09-11 10:15:00
1322
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人
RSS订阅