CN113887172A - 一种基于JavaScript与Unicode的字符排序方法、系统及装置 - Google Patents
一种基于JavaScript与Unicode的字符排序方法、系统及装置 Download PDFInfo
- Publication number
- CN113887172A CN113887172A CN202111160214.1A CN202111160214A CN113887172A CN 113887172 A CN113887172 A CN 113887172A CN 202111160214 A CN202111160214 A CN 202111160214A CN 113887172 A CN113887172 A CN 113887172A
- Authority
- CN
- China
- Prior art keywords
- unicode
- value
- function
- javascript
- judging whether
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Pending
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F40/00—Handling natural language data
- G06F40/10—Text processing
- G06F40/12—Use of codes for handling textual entities
- G06F40/126—Character encoding
- G06F40/129—Handling non-Latin characters, e.g. kana-to-kanji conversion
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Health & Medical Sciences (AREA)
- Artificial Intelligence (AREA)
- Audiology, Speech & Language Pathology (AREA)
- Computational Linguistics (AREA)
- General Health & Medical Sciences (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Document Processing Apparatus (AREA)
Abstract
本发明提出的一种基于JavaScript与Unicode的字符排序方法、系统及装置,所述包括:在JavaScript平台中创建一个排序规则函数,记为compare函数;在待排序的数组中提取相邻的两个元素,记为参数a和b;将参数a和b输入compare函数中;判断a与b是否相等,若相等则compare函数直接返回1;若不相等,进一步判断a是否有值,若a没有值,则compare函数直接返回1;若a有值,则判断b是否有值,若b没有值,则compare函数直接返回‑1;若b有值,则使用预设的Unicode对比方法函数对a和b进行比较;compare函数根据比较结果生成返回值;根据返回值采用sort方法对待排序的数组进行对比排序。本发明能够有效提升复杂业务场景下,js处理字符串排序的整体性能。
Description
技术领域
本发明涉及字符数据处理技术领域,更具体的说是涉及一种基于JavaScript与Unicode的字符排序方法、系统及装置。
背景技术
排序算法,即通过特定的算法因式将一组或多组数据按照既定模式进行重新排序。这种新序列遵循着一定的规则,体现出一定的规律,因此,经处理后的数据便于筛选和计算,大大提高了计算效率。对于排序,最基本的要求是要具有一定的稳定性,即当两个相同的元素同时出现于某个序列之中,则经过一定的排序算法之后,两者在排序前后的相对位置不发生变化。换言之,即便是两个完全相同的元素,它们在排序过程中也是各有区别的,不允许混淆不清。
当前,在JavaScript平台中排序常用方案有冒泡排序、选择排序、插入排序和sort方法。其中,冒泡排序的缺点是速度慢,运行时复杂度为O(n2),无法满足大型数组排序的需求;选择排序就是一个不稳定的排序算法,且执行对比次数过多,容易造成没必要的性能浪费;插入排序类似于对扑克牌的插入,一旦遇到数量级很大的排序,运行次数会呈几何级数增长;sort方法是通过浏览器引擎进行解析的方法,总会以第一个字符的ASCII值来进行比较排序,而且方法默认把所有元素先转换为String再排序,直接使用会产生诸多问题。
可见,如何针对大量需要排序字符串的使用场景实现字符串快速合理的排序是我们亟待解决的问题。
发明内容
针对现有技术中存在的问题,本发明的目的在于提供一种基于JavaScript与Unicode的字符排序方法、系统及装置,能够有效提升复杂业务场景下,js处理字符串排序的整体性能,在规避掉js本身sort函数的弊端的同时,采用定位Unicode数值的方式对不同语言的字符串进行合理的规划与排序。
本发明为实现上述目的,通过以下技术方案实现:
一种基于JavaScript与Unicode的字符排序方法,包括:
在JavaScript平台中创建一个排序规则函数,记为compare函数;
在待排序的数组中提取相邻的两个元素,记为参数a和b;
将参数a和b输入compare函数中;
判断a与b是否相等,若相等则compare函数直接返回1;
若不相等,进一步判断a是否有值,若a没有值,则compare函数直接返回1;
若a有值,则判断b是否有值,若b没有值,则compare函数直接返回-1;
若b有值,则使用预设的Unicode对比方法函数对a和b进行比较;
compare函数根据比较结果生成返回值;
根据返回值采用sort方法对待排序的数组进行对比排序。
进一步,所述使用预设的Unicode对比方法函数对a和b进行比较包括:
将参数a和b转换为相应的Unicode编码;
根据Unicode编码规则判断a和b是否同为中文字符,若是,则将a和b转换为拼音并得到相应的最终对比值;若否,则根据Unicode编码规则判断a和b是否同为英文字符;
若a和b是否同为英文字符,根据Unicode编码将a和b转换为英文小写字符后得到相应的最终对比值;
将a的最终对比值与b的最终对比值进行比较,若a的最终对比值大于b的最终对比值,则返回1,否则返回-1。
进一步,所述将参数a和b转换为相应的Unicode编码具体为:
使用charCodeAt()方法将参数a和b转换为相应的Unicode编码。
进一步,所述根据Unicode编码规则判断a和b是否同为中文字符包括:
查看a和b的Unicode编码;
若a和b的Unicode编码值均大于19968且小于40869,则a和b是同为中文字符。
进一步,所述则将a和b转换为拼音并得到相应的最终对比值包括:
使用Pinyin-by-chinese.js插件,将a和b的Unicode编码值分别减去19968之后转换为拼音字符对应的Unicode编码;
将拼音字符进行英文小写转换处理,将处理完成后的a和b的Unicode编码值作为相应的最终对比值。
进一步,所述根据Unicode编码规则判断a和b是否同为英文字符包括:根据Unicode编码规则判断是否a为中文字符且b为英文字符,若是则返回1;
若否,则根据Unicode编码规则判断是否a为英文字符且b为中文字符,若是则返回-1;
若否,则a和b同为英文字符。
相应的,本发明还公开了一种基于JavaScript与Unicode的字符排序系统,包括:
函数创建单元,用于在JavaScript平台中创建一个排序规则函数,记为compare函数;
数据提取单元,用于在待排序的数组中提取相邻的两个元素,记为参数a和b;数据注入单元,用于将参数a和b输入compare函数中;
初步筛选单元,用于判断a与b是否相等,若相等则compare函数直接返回1;
若不相等,进一步判断a是否有值,若a没有值,则compare函数直接返回1;
若a有值,则判断b是否有值,若b没有值,则compare函数直接返回-1;
比较单元,用于使用预设的Unicode对比方法函数对a和b进行比较;
返回单元,用于通过compare函数根据比较结果生成返回值;
排序单元,用于根据返回值采用sort方法对待排序的数组进行对比排序。
相应的,本发明还公开了一种基于JavaScript与Unicode的字符排序装置,包括:
存储器,用于存储计算机程序;
处理器,用于执行所述计算机程序时实现如上文任一项所述基于JavaScript与Unicode的字符排序方法步骤。
对比现有技术,本发明有益效果在于:本发明提供了一种基于JavaScript与Unicode的字符排序方法、系统及装置,首先采用了JavaScript中的sort方法,利用浏览器引擎去筛选最合适的排序算法,然后针对sort方法本身的弊端进行优化。采用与sort方法中ASCII编码不同的Unicode编码方法进行compare函数设计,使排序算法的使用性更加全面,性能上也得到一定的提升。
本发明实现了让前端开发人员面对字符串排序能够快速合理地进行。针对大量需要排序字符串的使用场景,本发明采用基于JavaScript的sort方法与Unicode转换来支撑不同的业务场景,对业务复杂度高、处理耗时的业务,采用字符转换Unicode方式,通过精确定位Unicode位置来针对性地进行sort排序;对于业务复杂度低的业务,也能利用sort方法本身特性,通过浏览器引擎解析,采用最合适的排序算法来进行排序。本发明既解决了sort方法本身存在的不稳定性因素,又对不同的业务场景实现了最优解方案,从整体上提升了项目在运行复杂业务场景排序中的性能。
由此可见,本发明与现有技术相比,具有突出的实质性特点和显著的进步,其实施的有益效果也是显而易见的。
附图说明
为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据提供的附图获得其他的附图。
附图1是本发明具体实施方式的方法流程图。
附图2是本发明具体实施方式中使用预设的Unicode对比方法函数对a和b进行比较的方法流程图。
附图3是本发明具体实施方式的系统结构图。
图中,1为函数创建单元,2为数据提取单元,3为数据注入单元,4为初步筛选单元,5为比较单元,6为返回单元,7为排序单元。
具体实施方式
下面结合附图对本发明的具体实施方式做出说明。
如图1所示的一种基于JavaScript与Unicode的字符排序方法,包括:
首先,在JavaScript平台中创建一个排序规则函数,记为compare函数。然后,在待排序的数组中提取相邻的两个元素,记为参数a和b,并将参数a和b输入compare函数中。
在compare函数中,首先判断a与b是否相等,若相等则compare函数直接返回1;若不相等,进一步判断a是否有值,若a没有值,则compare函数直接返回1;若a有值,则判断b是否有值,若b没有值,则compare函数直接返回-1。
若b有值,则使用预设的Unicode对比方法函数对a和b进行比较,compare函数根据比较结果生成返回值。
最后,根据返回值采用sort方法对待排序的数组进行对比排序。
在上述方法基础上,如图2所示,使用预设的Unicode对比方法函数对a和b进行比较包括:
首先,使用charCodeAt()方法将参数a和b转换为相应的Unicode编码。
然后,根据Unicode编码规则判断a和b是否同为中文字符,具体来说,若a和b的Unicode编码值均大于19968且小于40869,则a和b是同为中文字符。
若a和b是同为中文字符,则将a和b转换为拼音并得到相应的最终对比值。先使用Pinyin-by-chinese.js插件,将a和b的Unicode编码值分别减去19968之后转换为拼音字符对应的Unicode编码;再将拼音字符进行英文小写转换处理,将处理完成后的a和b的Unicode编码值作为相应的最终对比值。
若a和b不是同为中文字符的情况,则需要根据Unicode编码规则判断a和b是否同为英文字符。具体为:根据Unicode编码规则判断是否a为中文字符且b为英文字符,若是则返回1;若否,则根据Unicode编码规则判断是否a为英文字符且b为中文字符,若是则返回-1;若否,则a和b同为英文字符。
在a和b是否同为英文字符的情况下,根据Unicode编码将a和b转换为英文小写字符后得到相应的最终对比值。
最后,将a的最终对比值与b的最终对比值进行比较,若a的最终对比值大于b的最终对比值,则返回1,否则返回-1。
本发明提供了一种基于JavaScript与Unicode的字符排序方法,有效提升了在复杂业务场景下,js处理字符串排序的整体性能,在规避掉js本身sort函数的弊端的同时,采用定位Unicode数值的方式对不同语言的字符串进行合理的规划与排序。在针对例如列表前端排序、文件排序等多方面应用场景下有着大量的性能实验与测试,能够在页面整体加载速度与数据处理速度的提升上做到显著效果。
相应的,如图3所示,本发明还公开了一种基于JavaScript与Unicode的字符排序系统,包括:
函数创建单元1,用于在JavaScript平台中创建一个排序规则函数,记为compare函数。
数据提取单元2,用于在待排序的数组中提取相邻的两个元素,记为参数a和b。
数据注入单元3,用于将参数a和b输入compare函数中。
初步筛选单元4,用于判断a与b是否相等,若相等则compare函数直接返回1;若不相等,进一步判断a是否有值,若a没有值,则compare函数直接返回1;若a有值,则判断b是否有值,若b没有值,则compare函数直接返回-1。
比较单元5,用于使用预设的Unicode对比方法函数对a和b进行比较。
返回单元6,用于通过compare函数根据比较结果生成返回值。
排序单元7,用于根据返回值采用sort方法对待排序的数组进行对比排序。
相应的,本发明还公开了一种基于JavaScript与Unicode的字符排序装置,包括:
存储器,用于存储计算机程序;
处理器,用于执行所述计算机程序时实现如上文任一项所述基于JavaScript与Unicode的字符排序方法步骤。
本领域的技术人员可以清楚地了解到本发明实施例中的技术可借助软件加必需的通用硬件平台的方式来实现。基于这样的理解,本发明实施例中的技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中如U盘、移动硬盘、只读存储器(ROM,Read-Only Memory)、随机存取存储器(RAM,Random Access Memory)、磁碟或者光盘等各种可以存储程序代码的介质,包括若干指令用以使得一台计算机终端(可以是个人计算机,服务器,或者第二终端、网络终端等)执行本发明各个实施例所述方法的全部或部分步骤。本说明书中各个实施例之间相同相似的部分互相参见即可。尤其,对于终端实施例而言,由于其基本相似于方法实施例,所以描述的比较简单,相关之处参见方法实施例中的说明即可。
在本发明所提供的几个实施例中,应该理解到,所揭露的系统、系统和方法,可以通过其它的方式实现。例如,以上所描述的系统实施例仅仅是示意性的,例如,所述单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个单元或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些接口,系统或单元的间接耦合或通信连接,可以是电性,机械或其它的形式。
所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本实施例方案的目的。
另外,在本发明各个实施例中的各功能模块可以集成在一个处理单元中,也可以是各个模块单独物理存在,也可以两个或两个以上模块集成在一个单元中。
同理,在本发明各个实施例中的各处理单元可以集成在一个功能模块中,也可以是各个处理单元物理存在,也可以两个或两个以上处理单元集成在一个功能模块中。
结合附图和具体实施例,对本发明作进一步说明。应理解,这些实施例仅用于说明本发明而不用于限制本发明的范围。此外应理解,在阅读了本发明讲授的内容之后,本领域技术人员可以对本发明作各种改动或修改,这些等价形式同样落于本申请所限定的范围。
Claims (8)
1.一种基于JavaScript与Unicode的字符排序方法,其特征在于,包括:
在JavaScript平台中创建一个排序规则函数,记为compare函数;
在待排序的数组中提取相邻的两个元素,记为参数a和b;
将参数a和b输入compare函数中;
判断a与b是否相等,若相等则compare函数直接返回1;
若不相等,进一步判断a是否有值,若a没有值,则compare函数直接返回1;
若a有值,则判断b是否有值,若b没有值,则compare函数直接返回-1;
若b有值,则使用预设的Unicode对比方法函数对a和b进行比较;
compare函数根据比较结果生成返回值;
根据返回值采用sort方法对待排序的数组进行对比排序。
2.根据权利要求1所述的基于JavaScript与Unicode的字符排序方法,其特征在于,所述使用预设的Unicode对比方法函数对a和b进行比较包括:
将参数a和b转换为相应的Unicode编码;
根据Unicode编码规则判断a和b是否同为中文字符,若是,则将a和b转换为拼音并得到相应的最终对比值;若否,则根据Unicode编码规则判断a和b是否同为英文字符;
若a和b是否同为英文字符,根据Unicode编码将a和b转换为英文小写字符后得到相应的最终对比值;
将a的最终对比值与b的最终对比值进行比较,若a的最终对比值大于b的最终对比值,则返回1,否则返回-1。
3.根据权利要求2所述的基于JavaScript与Unicode的字符排序方法,其特征在于,所述将参数a和b转换为相应的Unicode编码具体为:
使用charCodeAt()方法将参数a和b转换为相应的Unicode编码。
4.根据权利要求2所述的基于JavaScript与Unicode的字符排序方法,其特征在于,所述根据Unicode编码规则判断a和b是否同为中文字符包括:
查看a和b的Unicode编码;
若a和b的Unicode编码值均大于19968且小于40869,则a和b是同为中文字符。
5.根据权利要求2所述的基于JavaScript与Unicode的字符排序方法,其特征在于,所述将a和b转换为拼音并得到相应的最终对比值包括:
使用Pinyin-by-chinese.js插件,将a和b的Unicode编码值分别减去19968之后转换为拼音字符对应的Unicode编码;
将拼音字符进行英文小写转换处理,将处理完成后的a和b的Unicode编码值作为相应的最终对比值。
6.根据权利要求2所述的基于JavaScript与Unicode的字符排序方法,其特征在于,所述根据Unicode编码规则判断a和b是否同为英文字符包括:
根据Unicode编码规则判断是否a为中文字符且b为英文字符,若是则返回1;
若否,则根据Unicode编码规则判断是否a为英文字符且b为中文字符,若是则返回-1;
若否,则a和b同为英文字符。
7.一种基于JavaScript与Unicode的字符排序系统,其特征在于,包括:
函数创建单元,用于在JavaScript平台中创建一个排序规则函数,记为compare函数;
数据提取单元,用于在待排序的数组中提取相邻的两个元素,记为参数a和b;
数据注入单元,用于将参数a和b输入compare函数中;
初步筛选单元,用于判断a与b是否相等,若相等则compare函数直接返回1;
若不相等,进一步判断a是否有值,若a没有值,则compare函数直接返回1;
若a有值,则判断b是否有值,若b没有值,则compare函数直接返回-1;
比较单元,用于使用预设的Unicode对比方法函数对a和b进行比较;
返回单元,用于通过compare函数根据比较结果生成返回值;
排序单元,用于根据返回值采用sort方法对待排序的数组进行对比排序。
8.一种基于JavaScript与Unicode的字符排序装置,其特征在于,包括:
存储器,用于存储计算机程序;
处理器,用于执行所述计算机程序时实现如权利要求1至6任一项所述基于JavaScript与Unicode的字符排序方法步骤。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202111160214.1A CN113887172A (zh) | 2021-09-30 | 2021-09-30 | 一种基于JavaScript与Unicode的字符排序方法、系统及装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202111160214.1A CN113887172A (zh) | 2021-09-30 | 2021-09-30 | 一种基于JavaScript与Unicode的字符排序方法、系统及装置 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN113887172A true CN113887172A (zh) | 2022-01-04 |
Family
ID=79004706
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202111160214.1A Pending CN113887172A (zh) | 2021-09-30 | 2021-09-30 | 一种基于JavaScript与Unicode的字符排序方法、系统及装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN113887172A (zh) |
-
2021
- 2021-09-30 CN CN202111160214.1A patent/CN113887172A/zh active Pending
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN103455475B (zh) | 排版方法、设备及系统 | |
CN115061721A (zh) | 一种报表生成方法、装置、计算机设备及存储介质 | |
CN102867049B (zh) | 一种基于单词查找树实现的汉语拼音快速分词方法 | |
CN112733551A (zh) | 文本分析方法、装置、电子设备及可读存储介质 | |
CN104516862A (zh) | 一种选择读取目标文档的编码格式的方法及其系统 | |
CN115438650A (zh) | 融合多源特征的合同文本纠错方法、系统、设备及介质 | |
CN109901978A (zh) | 一种Hadoop日志无损压缩方法和系统 | |
CN113435308B (zh) | 文本多标签分类方法、装置、设备及存储介质 | |
JP2012085274A (ja) | テキストをマトリクスコードシンボルに符号化するコンピュータ実行方法、マトリクスコードシンボルを復号化するコンピュータ実行方法、テキストをマトリクスコードシンボルに符号化するためのエンコーダ、およびマトリクスコードシンボルを復号化するためのデコーダ | |
CN110110777A (zh) | 图像处理方法和训练方法、以及装置、介质和计算设备 | |
WO2011074942A1 (en) | System and method of converting data from a multiple table structure into an edoc format | |
CN111475600B (zh) | 数据治理方法、装置及计算机可读存储介质 | |
CN111291547B (zh) | 模板生成方法、装置、设备及介质 | |
CN113221506A (zh) | 一种讲义排版的方法、装置、电子设备及存储介质 | |
CN103136166B (zh) | 字体确定方法和设备 | |
CN113887172A (zh) | 一种基于JavaScript与Unicode的字符排序方法、系统及装置 | |
CN111414730A (zh) | 一种文档字符格式信息获取方法、系统、终端及存储介质 | |
CN104516899B (zh) | 字库更新方法和装置 | |
CN115544979A (zh) | 一种行政地址提取方法、装置和设备及存储介质 | |
EP3696704B1 (en) | Synthetic data generation apparatus, method for the same, and program | |
CN109840080B (zh) | 字符属性比较方法、装置、存储介质及电子设备 | |
CN112287676A (zh) | 新词发现方法、装置、电子设备及介质 | |
CN115525728A (zh) | 汉字排序、汉字检索和汉字插入的方法和装置 | |
CN110263303B (zh) | 文本修改历史的追溯方法及装置 | |
CN110276051B (zh) | 拆分字体部件的方法及装置 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination |