Javascript 小工具, fCoper(按字串长短排序) By shawl.qiu

【Claude Code · VibeCoding】11|需求梳理:云枢智学 / 学员平台 第三章 · 项目实战以「云枢智学」学员平台为例,把业务目标拆成可执行的需求条目。 阅读详情

Javascript 小工具, fCoper(按字串长短排序) By shawl.qiu


说明:
这个原来是打算命名为 fClearRepeatAndOrderByLength, 不过后来发现名字也太长了, 就换了个拼接词...

主要是, 以使用特定字符分隔的字串, 从长到短排序或从短到长排序...
并清除重复项...

算法主要就是使用 冒泡算法,,,,
先取每字串的长度, 再冒泡排序字串长度, 在排序时使用 Callback 函数进行操作...

其实还是有点复杂的...

shawl.qiu
2007-08-22
http://blog.youkuaiyun.com/btbtd

内容:
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>shawl.qiu template </title>
<style type="text/css">
/* <![CDATA[ */

/* ]]> */
</style>
<script type="text/javascript">
/*<![CDATA[*/
  if  ( navigator. appName == "Microsoft Internet Explorer" ) 
  {
   //最大化窗口
   self. moveTo ( - 5, - 5 )
   self. resizeTo ( screen. availWidth  + 8, screen. availHeight + 8 )
   //这个脚本定义的宽度其实比原窗口还要大那么一点.
  }
/*]]*/
</script>
</head>
<body>
<form id="MainForm">
  <p> 输入: <br />
   <textarea cols="90%" rows="5" id="InputTxa">abstract|double | goto| native |static|boolean|enum|implements|package|super|byte|export|import|private|synchronized|char|extends|int|protected|throws|class|final|interface|public|transient|const|float|long|short|volatile|abstract|double|goto|native|static|boolean|enum|implements|package|super|byte|export|import|private|synchronized|char|extends|int|protected|throws|class|final|interface|public|transient|const|float|long|short|volatile|a|b|c|d|e|f|e|f|e|f|ff|a </textarea>
</p> <p>
   <input type="submit" id="Submiter" value="提交" />
   <input type="reset" value="重置" />
</p>
<p>输出: <br />
  <textarea cols="90%" rows="5" id="OutputTxa"> </textarea>
</p>
<p>分割符:
  <input type="text" size="5" id="SplitTbx" value="|" /> 
 |
  <input type="checkbox" value="checkbox" id="SmallToLargeCbx" checked="checked" /> 
 :从长到短
</p>
</form>

<script type="text/javascript">
/*<![CDATA[*/
  var  InputTxa  =  document. getElementById ( "InputTxa" );
  var  Submiter  =  document. getElementById ( "Submiter" );
  var  OutputTxa  =  document. getElementById ( "OutputTxa" );
  var  SplitTbx  =  document. getElementById ( "SplitTbx" );
  var  SmallToLargeCbx  =  document. getElementById ( "SmallToLargeCbx" );
 
  Submiter. onclick  =
   function ( )
   {
    OutputTxa. value  =  fCoper ( InputTxa. value,  SplitTbx. value,  SmallToLargeCbx. checked,  true );
    return  false;
   }
 
  function  fCoper ( Source,  sSplit,  bSmallToLarge,  bTrim )
  { // shawl.qiu code : return string
   var  bStr  =  false;
   if ( Source. constructor == String )  Source  =  [Source ],  bStr  =  true;
   if (! sSplit )  sSplit  =  "|";
     
   var  StrAr  =  Source [ 0 ]. split ( sSplit );
  
   StrAr  =  fClearArrayRepeats ( StrAr,  bTrim );
   fArrayOrderByLength ( StrAr );
  
   Source [ 0 ]  =  StrAr. join ( sSplit );
  
   if ( bStr )  return  Source [ 0 ];
  
   function  fArrayOrderByLength ( ItemAr )
   {
    if ( ItemAr. length === 1 )  return  ItemAr;
   
    var  Len  =  ItemAr. length;
    var  LenAr  =  [ ];
   
    var  i  =  Len;
    while ( -- i > - 1 )
    {
     LenAr [ i ]  =  ItemAr [ i ]. length;
    }
   
    fSort ( LenAr,  bSmallToLarge,  fCallback,  ItemAr );
   
    function  fCallback ( i,  k,  ItemAr )
    {     
     var  Temp  =  ItemAr [ k ];
     ItemAr [ k ]  =  ItemAr [ i ];
     ItemAr [ i ]  =  Temp;
    }
   
   }  // end function fArrayOrderByLength(ItemAr)
  
   function  fSort ( Ar,  bLargeToSmall,  CallbackFunc,  ItemAr,  bDebug )
   { // shawl.qiu code : void return 
    var  Debug  =  bDebug;
    var  Len  =  Ar. length;
    var  k  =  0;
    var  Times  =  1;
    var  bCallback  =  false;
   
    if ( CallbackFunc )  if ( CallbackFunc. constructor == Function )  bCallback  =  true;
   
    if ( Debug )
     document. write
     (
      "unsorted array: "
     ,Ar
     , "<p/>"
     );
    
    for ( var  i =0;  i <Len;  i ++ )
    {
     k  =  i;
     for ( var  j = i +1;  j <Len;  j ++ )
     {
      if ( bLargeToSmall )
      {
       if ( Ar [ k ] < Ar [ j ] )  k  =  j;
      }
      else
      {
       if ( Ar [ k ] > Ar [ j ] )  k  =  j;
      }
      Times ++;
     }  // end for 1
    
     if ( k != i )
     {
      Ar [ i ]  =  Ar [ i ]  ^  Ar [ k ];
      Ar [ k ]  =  Ar [ k ]  ^  Ar [ i ];
      Ar [ i ]  =  Ar [ i ]  ^  Ar [ k ];
      if ( bCallback )  CallbackFunc ( i,  k,  ItemAr );
     }
    }  // end for
   
    if ( Debug )
     document. write
     (
      "sorted array: "
     ,Ar
     , "<br/>"
     , "Times: "
     ,Times
     , "<hr/>"
     );
   }  // end function fSort(Ar, bLargeToSmall, CallbackFunc, ItemAr, bDebug)
  
   function  fClearArrayRepeats ( ItemAr,  bTrim )
   { // shawl.qiu script : return array
    if ( ItemAr. length === 1 )  return  ItemAr;
    var  Len  =  ItemAr. length;
   
    var  OtherAr  =  [ ];
    OtherAr. push ( ItemAr [ 0 ] );
   
    var  OtherArLen  =  1;
   
    var  i  =  Len;
    if ( bTrim )  while ( -- i > - 1 )  ItemAr [ i ]  =  ItemAr [ i ]. replace ( / ^/s+|/s+$ / g,  "" );
   
    for ( var  i =1;  i <Len;  i ++ )
    {
     var  bSame  =  false;
    
     for ( var  j =0;  j <OtherArLen;  j ++ )
     {
      if ( ItemAr [ i ] == OtherAr [ j ] ) 
      {
       bSame  =  true;
       break;
      }
     }  // end for 2
    
     if (! bSame )  OtherAr. push ( ItemAr [ i ] ),  OtherArLen ++;
    }  // end for 1
   
    return  OtherAr;
   }  // end function fClearArrayRepeats(ItemAr, bTrim)
    
  }  // end function fCoper(Source)
/*]]*/
</script>
</body>
</html>
静态时序分析(STA)_深入解析Data to Data Checks的零周期挑战 本文深入解析了静态时序分析(STA)中Data to Data Checks的核心概念与零周期挑战。重点探讨了当Setup要求值超过时钟周期时,工具如何调整发射沿,并导致Hold检查的发射与捕获沿“分裂”这一反直觉现象。文章通过案例详细解读了时序报告,并提供了通过调整约束或接受多周期保持两种策略来应对这一挑战,帮助工程师正确理解和处理此类复杂时序检查。 阅读详情

相关推荐

VS2019配置Qt5.14.2开发环境全流程(含MSVC2017 64-bit选择指南)

本文详细介绍了在VS2019中配置Qt5.14.2开发环境的完整流程,特别针对MSVC2017 64-bit编译器的选择提供了专业建议。从环境准备、Qt安装配置到VS2019集成设置,逐步指导开发者完成开发环境的搭建,并提供了常见问题的解决方案和高级优化技巧,帮助开发者高效进行Qt开发。

weixin_29243279的博客 513

Web 版翻译者资料库

本项目是桌面版《翻译者资料库》的 Web 移植版,基于 Spring Boot 3.3、Thymeleaf、Bootstrap 5.3 与 MySQL 8.0 构建。它面向翻译写作提供资料、词汇、句库、文本工具、对照制作、查找、备份恢复及旧库迁移等功能,完整继承桌面版核心业务规则,支持一键启动与离线访问。

howard2005的专栏 140

S/4中的16种特殊库存类型

S/4中的16种特殊库存类型

yanzibing99的博客 1万+

React 性能:memo / useMemo / useCallback

讲清 memo/useMemo/useCallback 的配合与边界,先测量再优化,避开常见过早优化。

JudithHuang的博客 325

nnUnet代码解读--优化策略

优化策略 nnUNetTrainer def initialize_optimizer_and_scheduler(self): assert self.network is not None, "self.initialize_network must be called first" self.optimizer = torch.optim.Adam(self.network.parameters(), self.initial_lr, weight_decay=self.weight_

weixin_44858814的博客 3824

OpenClaw Browser Relay Extension 鉴权失败与 invalid handshake 问题的终极解决方案

在使用 OpenClaw 浏览器插件 (Browser Relay Extension) 时,许多用户可能会遇到两个主要问题:一是配置端口错误导致的连接失败,二是鉴权失败 (Gateway token rejected)。本文将详细解析这两个问题并提供解决方案。

gerryke的blog 5559

V8 机制、手写核心函数与 TypeScript 类型体操

或固定初始化(如数组先定长、对象先给全字段)保持类型与形状稳定;这些都比"换框架"更基础。只能处理纯数据(丢函数、Date、RegExp、循环引用报错)。生产级深拷贝要处理:原始值短路、循环引用、V8(Chrome / Node 的 JS 引擎)不是"解释一行跑一行"那么简单,它用。图:V8 执行流程——解释执行 + 热点优化,优化失败会 Deopt 回退。JS 内存自动管理,但"自动"不等于"不会漏"。是"固定间隔最多执行一次"。手写 Promise 是"懂异步"的试金石。是"停下后才执行最后一次",

qq_38468358的博客 346

从理论到代码:手把手教你用Matlab复现MMC的HSS阻抗模型(附避坑指南)

本文详细介绍了如何使用Matlab复现MMC的HSS阻抗模型,涵盖谐波状态空间(HSS)理论、代码实现步骤及常见问题解决方案。通过谐波线性化和序阻抗建模技术,帮助工程师准确分析MMC的阻抗特性,并提供避坑指南以解决矩阵维度错误、收敛性问题和频域转换陷阱等难点。

weixin_42561040的博客 357

DSH (DeepSeek Harness) Windows 升级安装指南20261107

注意:如果在普通窗口执行 nvm 提示找不到命令,或执行 nvm use 提示 Access is denied,请务必关闭当前窗口,重新打开一个管理员CMD 执行上述完整路径命令。找到 .credentials.yaml,将其重命名为 .credentials.yaml.bak(备份并使其失效)。Node.js Storage Location:可改到非系统盘(如 D:\dev\nvm,避免路径含空格或中文)。打开文件资源管理器,进入 C:\Users<你的用户名>.dsh\。

fengye207161的博客 192

Qt实战:用QTreeView+QStandardItemModel实现多级多列文件浏览器(附完整代码)

本文深入探讨了使用Qt的QTreeView与QStandardItemModel构建多级多列文件浏览器的完整实践。通过分析模型/视图框架的优势,详细演示了从基础框架搭建、模拟数据填充,到对接真实文件系统实现懒加载的全过程。文章还涵盖了自定义委托、多列排序、右键菜单等高级定制技巧,并提供了性能优化建议和完整的代码示例,帮助开发者打造功能强大且高效的工业级文件管理界面。

weixin_29021291的博客 424

QT实现计算器(C/C++)

digitClicked()槽函数用于处理数字按钮的点击事件,operatorClicked()槽函数用于处理运算符按钮的点击事件,equalsClicked()槽函数用于处理等号按钮的点击事件。在operatorClicked()槽函数中,我们获取被点击按钮的文本作为当前运算符,并将文本框中的内容转换为双精度浮点数,存储为操作数1。在上述代码中,我们添加了一个私有成员变量m_operand1,用于存储第一个操作数的值,以及一个私有成员变量m_currentOperator,用于存储当前运算符的值。

CyberNova的博客 385

SpringBoot「衣依」服装销售平台:144个Java文件180个接口,从挑衣服到收货评价整条链路都在

# SpringBoot「衣依」服装销售平台:144个Java文件180个接口,从挑衣服到收货评价整条链路都在 > 这是一套基于 Spring Boot 的服装销售平台源码,配套 `db.sql` 建表脚本,业务覆盖商品展示、购物车、订单流转、收货地址、订单评价、商品评论、在线客服、轮播图和资讯。形态是**前后台双端**:前台是顾客逛的商城,后台是管理员管的控制台。本文带你看清里面有什么、怎么跑

面朝大海 226

使用Clumsy和Process Explorer定位软件高CPU占用问题

使用弱网模拟工具Clumsy和进程查看工具Process Explorer定位软件高CPU占用问题。

dvlinker的技术专栏 5706

微信小程序-wxs

在微信开发者工具中右键创建.wxs后缀的文件。每个.wxs文件也是一个独立模块,同样使用导出内容。示例(文件return d;FOO: foo,bar: bar(外联定义参考官方文档)

dreams_dream的博客 339

蓝牙模块HM-10手册

蓝牙模块HM-10手册,该手册对蓝牙模块HM-10进行了详细的介绍和使用方法以及一些AT指令。

Data-Structures-and-Algorithm-Analysis-in-Java.pdf

作者: Weiss, Mark A. 出版社: Addison Wesley Data Structures and Algorithm Analysis in Java is an “advanced algorithms” book that fits between traditional CS2 and Algorithms Analysis courses. In the old ACM Curriculum Guidelines, this course was known as CS7. This text is for readers who want to learn good programming and algorithm analysis skills simultaneously so that they can develop such programs with the maximum amo...

使用echarts模拟甘特图

项目中需按时间段展示不同颜色的数据,通过解析时长并统计各类型总时长,结合预设颜色映射表(含自定义与默认色),动态生成ECharts图表。利用sumByTypeName聚合数据,为每类分配对应颜色,实现图例与柱状图的精准匹配,确保多时段、多类型数据可视化清晰准确。

uuai 28

Probability and Statistics - 4th edition

Probability and Statistics - 4th edition

【技术专题】JavaScript 网页技术 - JavaScript 流程控制

小锋老师推出《一天学会JavaScript(无废话版)》视频教程,涵盖基础语法、流程控制、函数、数组对象、DOM操作及ES6新特性。内容精炼,配套课件与源码打包下载,助力快速入门。重点讲解if/else、switch、for/while循环、for...of/in遍历及break/continue使用场景,并通过成绩判断实例演示实际应用。适合零基础学习者高效掌握核心技能。

java1234的博客 161

大中型超市收银系统(可直接运行)

光步前台收银系统系统功能:商品销售、商品退货、挂单、收银员权限、会员销售、单品取消、整单取消、商品查询、脱机销售、脱机数据上传,基本资料下载,开钱箱、小票打印、收款结算,支持多币种付款方式(现金、储值卡、礼券、微信等),支持多种促销。运行环境:.net 4.0登陆信息用户名:1001 密码:123456内置商品信息,商品编码可输入00001000 - 00010000,测试效果相关功能键F5 结算 F9挂单 F11商品查询 F8退货 Insert单品取消 Del整单取消 F12开钱箱F2 会员 Ctrl+Z退出系统 Home 锁屏 相关源码待公开

基于 FastAPI+LangChain+LangGraph+Agent+Vue3+MySQL 的房产数据采集与房价预测分析平台

本文介绍一个完整的「房产数据采集+AI房价预测」全栈项目,涵盖FastAPI异步后端、LangGraph Agent智能问答、爬虫采集、机器学习预测与Vue3前端,实现从数据采集到AI交互的闭环。项目融合多技术栈,具备真实业务场景与生产级设计(如降级策略、流式输出、多模型对比),兼具简历亮点与答辩演示优势,可系统性提升工程能力,并附高频面试题解析,是理想的技术综合实践项目。

深耕开发,专注编程实战。分享源码解析、项目搭建、问题排查笔记,沉淀技术,持续更新。 229

Agent 的 ReAct、Plan、Execute、Reflection 模式

本文系统解析 Agent 的 ReAct、Plan、Execute、Reflection 四模式,揭示其核心为“下一步谁定”与“错了怎么发现”两大问题。ReAct 逐步决策,适合动态环境但易冗余;Plan 一次性规划,高效却惧变化;Execute 严格落地,需明确判据与失败策略;Reflection 事后校验,强化纠错闭环。四者协同:外层规划,执行中嵌入思考,每步后反思,连续失败才重规划,构建稳定可控的智能体工作流。

2401_89855466的博客 325

货运APP、货运小程序开发:网络货运平台与同城配送搬家系统实战

本文介绍一套完整的货运平台系统,涵盖货运APP、小程序、网络货运、同城配送、搬家预约等场景,基于SpringBoot+MyBatisPlus+MySQL技术栈,采用uni-app实现多端统一开发,配套TMS运输管理与物流管理系统,支持下单、派单、运输、结算全流程,适用于货运搬家、物流搬运与配送业务,可作为物流软件及TMS系统的参考实现。

juzige03的博客 218

Vue3 低代码移动表单设计器实战(二):缩放画布下的拖拽系统与树状级联数据结构

本文深入剖析Vue3低代码表单设计器在缩放画布下的拖拽失效问题,揭示SortableJS在CSS Transform下坐标崩溃的数学根源。通过自研独立视觉克隆壳层与逆向几何补偿算法,实现精准拖拽;采用扁平数据存储+运行时树状计算结构,解决级联依赖与深克隆难题,确保逻辑一致性与性能优化,为复杂低代码系统提供可复用的工程范式。

NanChen的博客 341

Vue-Router

本文详解前端路由原理与实现,以网易云音乐为例,介绍通过 vue-router 实现页面无刷新切换。核心步骤包括:安装模块、创建路由实例、注册应用、配置页面组件与路由出口。使用 router-link 实现声明式导航,结合 query 和 params 传参,支持模糊与精确匹配激活状态。强调 useRoute(读取参数)与 useRouter(执行跳转)的区别,帮助开发者掌握单页应用路由的核心机制。

2301_79245606的博客 342

LangGraph == 循环结构的实现

这是静态约束,不会参与运行时校验。主要作用是提升代码可读性、通过静态类型检查,同时帮助 LangGraph。也就是说,是否继续重试,在当前实现中主要由大模型决定,而不是由程序逻辑强制保证。因此,如果模型在多次工具调用失败后选择停止重试并生成最终回答,运行图不会阻止它。函数,也不再需要调用 add_conditional_edges()只要大模型持续返回工具调用,流程就会不断回到 llm_node。的缩写,即“推理 + 行动”架构。,运行时只负责判断具体走哪一条路径。

每天都要努力学习哦~~ 347

Vue 前端开发 AI 对话页面:流式消息渲染、文件上传

关键点是不能手动设置 Content-Type 为 multipart/form-data,必须由浏览器自动生成带有 boundary 的请求头,否则后端无法解析。思路:将对象序列化为 JSON 字符串,作为 FormData 的一个普通字段(如 formData.append(‘payload’, JSON.stringify(data))),后端接收该字段后再反序列化。若上传大文件(>10MB),需实现独立的分片上传接口,在提交对话前先获取文件 id 或 url,再随文本发送引用。移除输入框的禁用态;

2402_85729970的博客 387

Flux 架构:一个单向数据流库是怎么跑起来的

状态只有一份 + 数据单向流 + reducer 是纯函数 + 中间件链可组合 + 视图层声明式绑定。这 30 行就是这套思想的最小完整样本:两次useStore订阅、一次拿链式 dispatch、四个按钮对应四种 action(其中一种是 thunk 形态)。

sun_weitao的博客 109

纯 Go 写的 JS 引擎,跑分超过了 C 语言的 QuickJS

moejs 是一个纯 Go 编写的高性能 JavaScript 运行时,专为 Go 程序中的插件沙箱场景设计。发布于 2026 年 11 月,由 new-api 维护者 Calcium-Ion 开发,相较 C 版 QuickJS 快 35%,内存占用仅 81 KiB,单次调用仅 6.9 微秒。支持快速复用运行时、零拷贝解析、安全沙箱与 TypeScript 直接编译,通过 test262 80971 个用例零失败。适合高并发插件系统,如 AI 网关钩子处理,已在实际场景中实现请求吞吐量提升 8.6 倍。仓库

前端之虎陈随易 203

vue3 markdown编辑框与压缩包文件上传及预览

el-input v-model="form.author" placeholder="作者/组织" maxlength="50" clearable /><el-select v-model="form.category" placeholder="请选择标签" class="full-width"><el-select v-model="form.license" placeholder="请选择" class="full-width">'编辑技能' : '新建技能' }}</div>

每一篇博客都是对自己技术的沉淀 174
上一篇: Javascript 中模拟 Enum By shawl.qiu
下一篇: Javascript 小工具, StringToArray(字串转数组) By shawl.qiu
btbtd
博客等级 码龄22年 454粉丝 419原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值