适用于前端JS中文排序的方法(localeCompare)

JavaScript字符排序规则(编码排序、字典排序) 前端日常使用的排序规则主要有:**编码排序**、**字典排序**。 在常规程序中,默认的排序规则大部分都是编码排序,也就是所谓的 Unicode编码。比如在 js 中,数组的 sort 方法,默认排序规则就是编码排序。 阅读详情

localeCompare方法返回一个数字来指示一个参考字符串是否在排序顺序前面或之后或与给定字符串相同。

referenceStr.localeCompare(compareString[, locales[, options]])

compareString 表示用来比较的字符串

因为后一个参数浏览器支持不是很友好,就不多做介绍,感兴趣可以到MDN上看。

一般的用法就是 a.localeCompare(b),浏览器基本都是支持的。

在这里插入图片描述
最后就是写法了,直接贴比较函数吧。

 //比较函数
 let comparatorFun = (valueA, valueB) => {
    let targetA = valueA != null && valueA.toString().toLowerCase()
    let targetB = valueB != null && valueB.toString().toLowerCase()
    return targetA != null && targetA.localeCompare ? targetA.localeCompare(targetB) : targetA - targetB
  }
  
  let array=[1,9,0,'','我','他','我们']
  let sortArray = array.sort((a,b)=>comparatorFun(a,b)) //[ '', 0, 1, 9, '他', '我', '我们' ]
	
因果强化学习:优化决策策略的因果方法 1. 背景介绍 1.1 传统强化学习的局限性 强化学习(Reinforcement Learning, RL)是一种通过与环境交互来学习最优决策策略的方法。然而,传统强化学习方法在面对复杂、动态和不确定的现实世界问题时,往往存在以下局限性: 数据效率低:传统强化学习方法 阅读详情

相关推荐

利用OTSU阈值算法在ZYNQ上实现浒苔识别

利用OTSU阈值算法进行图像二值化,结果用HDMI显示

qq_38075564的博客 1275

javaScript 中的localeCompare方法及其使用

localeCompare方法是JavaScript中比较字符串时常用的方法之一,其主要功能是根据指定的语言环境比较两个字符串的大小关系,可以用于排序、查找、去重等操作。

m0_69097184的博客 4147

YOLOv8 TensorRT C++部署实战详解:从XMake构建到推理流水线

本项目实现了一个基于YOLOv8和TensorRT的高性能火灾烟雾检测系统,具有以下核心特点: 技术架构:采用TensorRT 8.6+进行GPU加速推理,结合CUDA 12.1和OpenCV 4.8+,实现高效计算机视觉处理。系统使用XMake替代CMake构建,配置更简洁高效。

hscing的博客 1065

js字符串对比之localeCompare()方法

js提供了字符串的对比方法localeCompare(),该方法返回的是一个数字用来表示一个参考字符串和对比字符串是排序在前,在后或者相同。该方法基本不单独使用,大部分时间是配合字符串排序使用的。 一、语法: string.localeCompare(targetString,locales,options); 1、参数 targetString:对比字符串 locales:看MDN上的解释是用来表示一种或多种语言或区域的一个符合BCP 47标准的字符串或一个字符串数组,我个人的理解是 o..

first_shun的博客 3万+

标准恢复二极管整流器的全球与中国市场2022-2028年:技术、参与者、趋势、市场规模及占有率研究报告

报告页数: 150 图表数: 100 报告价格:¥16800 本文研究全球与中国市场标准恢复二极管整流器的发展现状及未来发展趋势,分别从生产和消费的角度分析标准恢复二极管整流器的主要生产地区、主要消费地区以及主要的生产商。重点分析全球与中国市场的主要厂商产品特点、产品规格、不同规格产品的价格、产量、产值及全球和中国市场主要生产商的市场份额。 主要生产商包括: Yangzhou Yangjie Vishay Intertechnology Power Semiconductors Inc Nexperia B

Fj69258的博客 5849

告别切换烦恼!用Parallels Desktop的Host-Only网卡,在macOS上直接访问虚拟机里的公司内网

本文详细介绍了如何在macOS上使用Parallels Desktop的Host-Only网卡直接访问虚拟机内的公司内网,告别频繁切换操作系统的烦恼。通过配置Host-Only网络模式,实现主机与虚拟机的安全高效通信,特别适合需要频繁访问内网资源的IT从业者。文章包含分步指南、自动化脚本和常见问题解决方案,帮助用户优化工作流程。

weixin_28739079的博客 364

JavaScript字符串本地化比较:全面掌握localeCompare方法

本文介绍 JavaScript 中 localeCompare 方法,用于本地化字符串比较。先讲功能、特性、返回值及基本用法示例,再探讨其在数组排序、自然排序和相等性检测等常规场景的应用,以及高级配置选项,如语言区域定制、选项详解和特殊字符处理等。还通过多语言表格排序和智能搜索建议排序等实战案例,展现其实际应用,并指出性能、兼容性等注意事项,最后总结其在国际化字符串比较中的强大功能及掌握关键点

m0_64455070的博客 3038

uniapp - 解决报错Error in event handler for “service.requestComponentInfo“: “TypeError: cannot read prop

uniapp,报错,Error in event handler for "service.requestComponentInfo": "TypeError: cannot read properties of undefined (reading 'matches')",h5移动端网页,微信小程序,支付宝小程序,Android安卓,苹果ios,app,nvue,如何解决这个问题,一直报错,uniapp报错Error,都检查了还是报错,怎么解决这个错误,uniapp出现Error in event han

🏆 前端领域优质创作者 6379

js中的localeCompare到底是如何比较的?

js中有一个sort方法,可以用来对数组排序,它有一个比较函数,用来比较两个元素的大小,我们先来看一个最基本的: ['2','10','3'].sort((a,b)=>{ return a-b; }); 上面我们写了一个最简单的sort,它的返回结果是['2','3','10']。 上面的排序规则是先将字符串转成数字,然后按照数字大小排序的,因为字符串在遇到减号的时候,先转成Number,再进行计算。 除了上面这种排序,还有一种排序规则: ['2'...

細水、長流√的专栏 4892

请尽可能地详细说明一个VLA项目的立项训练到落地的全流程

一个机器人VLA项目的全流程是一个复杂的系统工程,它深度融合了机器人学 (Robotics)计算机视觉 (CV)和自然语言处理 (NLP)。其核心挑战在于高质量数据的获取和从仿真到现实的有效迁移。与纯粹的软件AI项目相比,它增加了硬件、物理交互和安全性的维度,但其最终能让AI走出虚拟世界、在物理世界中产生实际价值,这也是其巨大的魅力所在。

具身机器人和通用AI 303

2024年数字IC秋招-大疆-数字芯片开发工程师-笔试题

笔试题型:选择题 + 简答题笔试平台:大疆创新(电脑监控)笔试时间:90min做题感受:知识面覆盖很广,很多题目不会做(1) 什么是功耗优化中的DVFS技术?(2)降低功耗的原理是什么?(3)一般工作流程是怎样的?(4)必须的硬件模块有哪些?

qq_42135020的博客 2667

js使用localeCompare中文排序

但在Mac 和 Windows 上对大小写字母的排序规则不一致。,产品需要改为:数字 > 字母 > 中文。一般情况下,传入locales就可以了。使用localeCompare对一个。

m0_73248604的博客 1051

yolov8 PTQ和QAT量化实战(源码详解)

量化():是指将高精度浮点数(FP32)转换为低精度(8bit或4bit)整数的过程,它是模型部署中的一种非常重要的优化方法,可以在较少的精度损失下,大幅提供神经网络的效率和性能。目前主流的神经网络量化方式有PTQ和QATPTQ是训练后量化(),无需数据集和训练,直接量化模型权重QAT是量化感知训练(),量化后需要在数据集上继续微调训练。QAT过程中,我们首先需要选择哪些层需要进行finetune训练,并利用FP32对应层的输出作为监督进行训练。

@bangbang的博客 5328

使用js操作数组

Array.prototypeArray.prototype.sort()1.实现按照拼音排序--元素string2.实现按照拼音排序--元素k-v Array.prototype.sort() 1.实现按照拼音排序–元素string 2.实现按照拼音排序–元素k-v <html> <head></head> <body> <script&g...

qq_26144233的博客 169

深度学习工具包 DeepLearningToolbox

深度学习工具包Deprecation notice.-----This toolbox is outdated and no longer maintained.There are much better tools available for deep learning than this toolbox, e.g. [Theano](http://deeplearning.net/software/theano/), [torch](http://torch.ch/) or [tensorflow](http://www.tensorflow.org/)I would suggest you use one of the tools mentioned above rather than use this toolbox.Best, Rasmus.DeepLearnToolbox================A Matlab toolbox for Deep Learning.Deep Learning is a new subfield of machine learning that focuses on learning deep hierarchical models of data.It is inspired by the human brain's apparent deep (layered, hierarchical) architecture.A good overview of the theory of Deep Learning theory is[Learning Deep Architectures for AI](http://www.iro.umontreal.ca/~bengioy/papers/ftml_book.pdf)For a more informal introduction, see the following videos by Geoffrey Hinton and Andrew Ng.* [The Next Generation of Neural Networks](http://www.youtube.com/watch?v=AyzOUbkUf3M) (Hinton, 2007)* [Recent Developments in Deep Learning](http://www.youtube.com/watch?v=VdIURAu1-aU) (Hinton, 2010)* [Unsupervised Feature Learning and Deep Learning](http://www.youtube.com/watch?v=ZmNOAtZIgIk) (Ng, 2011)If you use this toolbox in your research please cite [Prediction as a candidate for learning deep hierarchical models of data](http://www2.imm.dtu.dk/pubdb/views/publication_details.php?id=6284)```@MASTERSTHESIS\{IMM2012-06284, author = "R. B. Palm", title = "Prediction as a candidate for learning deep hierarchical models of data", year = "2012",}```Contact: rasmusbergpalm at gmail dot comDirectories included in the toolbox-----------------------------------`NN/` - A library for Feedforward Backpropagation Neural Networks`CNN/` - A library for Convolutional Neural Networks`DBN/` - A library for Deep Belief Networks`SAE/` - A library for Stacked Auto-Encoders`CAE/` - A library for Convolutional Auto-Encoders`util/` - Utility functions used by the libraries`data/` - Data used by the examples`tests/` - unit tests to verify toolbox is workingFor references on each library check REFS.mdSetup-----1. Download.2. addpath(genpath('DeepLearnToolbox'));Example: Deep Belief Network---------------------```matlabfunction test_example_DBNload mnist_uint8;train_x = double(train_x) / 255;test_x = double(test_x) / 255;train_y = double(train_y);test_y = double(test_y);%% ex1 train a 100 hidden unit RBM and visualize its weightsrand('state',0)dbn.sizes = [100];opts.numepochs = 1;opts.batchsize = 100;opts.momentum = 0;opts.alpha = 1;dbn = dbnsetup(dbn, train_x, opts);dbn = dbntrain(dbn, train_x, opts);figure; visualize(dbn.rbm{1}.W'); % Visualize the RBM weights%% ex2 train a 100-100 hidden unit DBN and use its weights to initialize a NNrand('state',0)%train dbndbn.sizes = [100 100];opts.numepochs = 1;opts.batchsize = 100;opts.momentum = 0;opts.alpha = 1;dbn = dbnsetup(dbn, train_x, opts);dbn = dbntrain(dbn, train_x, opts);%unfold dbn to nnnn = dbnunfoldtonn(dbn, 10);nn.activation_function = 'sigm';%train nnopts.numepochs = 1;opts.batchsize = 100;nn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.10, 'Too big error');```Example: Stacked Auto-Encoders---------------------```matlabfunction test_example_SAEload mnist_uint8;train_x = double(train_x)/255;test_x = double(test_x)/255;train_y = double(train_y);test_y = double(test_y);%% ex1 train a 100 hidden unit SDAE and use it to initialize a FFNN% Setup and train a stacked denoising autoencoder (SDAE)rand('state',0)sae = saesetup([784 100]);sae.ae{1}.activation_function = 'sigm';sae.ae{1}.learningRate = 1;sae.ae{1}.inputZeroMaskedFraction = 0.5;opts.numepochs = 1;opts.batchsize = 100;sae = saetrain(sae, train_x, opts);visualize(sae.ae{1}.W{1}(:,2:end)')% Use the SDAE to initialize a FFNNnn = nnsetup([784 100 10]);nn.activation_function = 'sigm';nn.learningRate = 1;nn.W{1} = sae.ae{1}.W{1};% Train the FFNNopts.numepochs = 1;opts.batchsize = 100;nn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.16, 'Too big error');```Example: Convolutional Neural Nets---------------------```matlabfunction test_example_CNNload mnist_uint8;train_x = double(reshape(train_x',28,28,60000))/255;test_x = double(reshape(test_x',28,28,10000))/255;train_y = double(train_y');test_y = double(test_y');%% ex1 Train a 6c-2s-12c-2s Convolutional neural network %will run 1 epoch in about 200 second and get around 11% error. %With 100 epochs you'll get around 1.2% errorrand('state',0)cnn.layers = { struct('type', 'i') %input layer struct('type', 'c', 'outputmaps', 6, 'kernelsize', 5) %convolution layer struct('type', 's', 'scale', 2) %sub sampling layer struct('type', 'c', 'outputmaps', 12, 'kernelsize', 5) %convolution layer struct('type', 's', 'scale', 2) %subsampling layer};cnn = cnnsetup(cnn, train_x, train_y);opts.alpha = 1;opts.batchsize = 50;opts.numepochs = 1;cnn = cnntrain(cnn, train_x, train_y, opts);[er, bad] = cnntest(cnn, test_x, test_y);%plot mean squared errorfigure; plot(cnn.rL);assert(er<0.12, 'Too big error');```Example: Neural Networks---------------------```matlabfunction test_example_NNload mnist_uint8;train_x = double(train_x) / 255;test_x = double(test_x) / 255;train_y = double(train_y);test_y = double(test_y);% normalize[train_x, mu, sigma] = zscore(train_x);test_x = normalize(test_x, mu, sigma);%% ex1 vanilla neural netrand('state',0)nn = nnsetup([784 100 10]);opts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samples[nn, L] = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.08, 'Too big error');%% ex2 neural net with L2 weight decayrand('state',0)nn = nnsetup([784 100 10]);nn.weightPenaltyL2 = 1e-4; % L2 weight decayopts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex3 neural net with dropoutrand('state',0)nn = nnsetup([784 100 10]);nn.dropoutFraction = 0.5; % Dropout fraction opts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex4 neural net with sigmoid activation functionrand('state',0)nn = nnsetup([784 100 10]);nn.activation_function = 'sigm'; % Sigmoid activation functionnn.learningRate = 1; % Sigm require a lower learning rateopts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex5 plotting functionalityrand('state',0)nn = nnsetup([784 20 10]);opts.numepochs = 5; % Number of full sweeps through datann.output = 'softmax'; % use softmax outputopts.batchsize = 1000; % Take a mean gradient step over this many samplesopts.plot = 1; % enable plottingnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex6 neural net with sigmoid activation and plotting of validation and training error% split training data into training and validation datavx = train_x(1:10000,:);tx = train_x(10001:end,:);vy = train_y(1:10000,:);ty = train_y(10001:end,:);rand('state',0)nn = nnsetup([784 20 10]); nn.output = 'softmax'; % use softmax outputopts.numepochs = 5; % Number of full sweeps through dataopts.batchsize = 1000; % Take a mean gradient step over this many samplesopts.plot = 1; % enable plottingnn = nntrain(nn, tx, ty, opts, vx, vy); % nntrain takes validation set as last two arguments (optionally)[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');```[![Bitdeli Badge](https://d2weczhvl823v0.cloudfront.net/rasmusbergpalm/deeplearntoolbox/trend.png)](https://bitdeli.com/free "Bitdeli Badge")

老版QQ原生表情gif动态

这是老版的QQ表情,不过全是动态的的,Windows照片查看器是不会动的,可以右击用浏览器打开查看,再说一遍是老版的,只是分享给宁愿用老版也要动态的人。

JS排序:localeCompare() 方法实现中文排序、sort方法实现数字英文混合排序

  定义:用本地特定的顺序来比较两个字符串。   语法:stringObject.localeCompare(target)   参数:target——要以本地特定的顺序与 stringObject 进行比较的字符串。   返回值:说明比较结果的数字。   (1)如果 stringObject 小于 target,则 localeCompare() 返回小于 0 的数。   (2)如果 stringObject 大于 target,则该方法返回大于 0 的数。   (3)如果两个字符串相等,或根

細水、長流√的专栏 3382

SAP B1中文培訓教材_SDK

公司内部培训资料,对开发工具 ,DIAPI, UIAPI,Add-ON有详细解说

JS数组对象——中文按照首字母排序(分组)sort()、localeCompare()

排序在后台管理系统对于数据的处理中用得非常多。本期文章重点介绍根据中文首字母排序和分组。将用到JavaScript的sort()和localeCompare()方法,分组将涉及到外部插件的引入。

XSL_HR的博客 1万+

精雕软件(JDpaint) 5.5 绿色版

精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版

js中sort方法的排序问题及localeCompare方法

让我们来看一个例子: var arr = [1,2,4,7,21,45]; arr.sort(); //[1, 2, 21, 4, 45, 7] arr.sort(function(a,b){ return a-b; }) //[1, 2, 4, 7, 21, 45] 复制代码这个结果让我很疑惑,上面的代码第一个sort没有按照数值的大小对数字进行...

weixin_34347651的博客 1637

【JavaScript】localeCompare 方法详解

是 JavaScript 字符串对象的一个方法,专门用于比较两个字符串。与传统的比较方法不同, 可以根据不同的语言环境(locale)来确定字符串的排序顺序。这样,开发者就能够确保字符串比较的结果符合特定语言或区域的规则。语法如下: 和 是需要进行比较的两个字符串。 该方法返回一个数字,表示 与 的比较结果。 2. 返回值的意义 方法返回一个数字,表示两个字符串的相对排序关系: 二、 方法的参数 除了基本的比较操作外, 还接受两个可选的参数: 和 ,用于更细致地控制比较规则。 参数指定一个或多

lph159的博客 1967

javascript 中文排序 localeCompare

localeCompare()方法返回一个数字来指示一个参考字符串是否在排序顺序前面或之后或与给定字符串相同。 新的locales、options 参数能让应用程序定制函数的行为即指定用来排序的语言。 locales 和 options 参数是依赖于具体实现的,在旧的实现中这两个参数是完全被忽略的。 var arr = ['南京', '北京', '上海', '杭州', '深圳']; function sortChinese (arr) { // 参数: 排序的数组 arr.sort(fun.

qq_33490514的博客 948

JavaScript中文和字母排序方法

使用localeCompare进行中文排序 定义:用本地特定的顺序来比较两个字符串。 语法:stringObject.localeCompare(target) 参数:target——要以本地特定的顺序与 stringObject 进行比较的字符串。 返回值:说明比较结果的数字。 (1)如果 stringObject 小于 target,则 localeCompare() 返回小于 ...

auhe20308的博客 2692

S中使用sort结合localeCompare实现中文排序实例

这篇文章主要介绍了JS中使用sort结合localeCompare实现中文排序实例,重点介绍localeCompare函数,需要的朋友可以参考下。 说到表格排序,首先要说的就一定是数组的排序,因为数组排序是表格排序的基础。 JavaScript为数组提供了sort()方法用于表格排序,默认情况下该方法会使Array中的数组按照ASCII码的顺序进行排列,JavaScript还为数组提供

爱生活,爱程序。 1690

从‘阿’到‘座’:深入聊聊JavaScript中文排序的那些坑与localeCompare的正确姿势

本文深入探讨JavaScript中文排序的常见问题与解决方案,重点解析`localeCompare`方法在不同环境下的表现差异。通过对比浏览器与Node.js的排序结果,揭示编码标准、区域设置和引擎版本对排序的影响,并提供高性能优化方案和混合排序策略,帮助开发者实现准确高效的中文排序。

weixin_30410119的博客 399

Java或者前端 实现中文排序(调API的Demo)

前端 Vue 中的中文排序通常使用 JavaScript 提供的 localeCompare 方法来比较中文字符串 Java 后端可以使用 Collator 类来实现中文排序

码农研究僧的博客 1383

js中 英文中文混合排序

js中 英文中文数字混合排序 问题简述: Array本身有sort方法,但是实现不了中英文混合排序。 一、Array默认的排序 Array的默认排序 sort() 方法用原地算法对数组的元素进行排序,并返回数组。默认排序顺序是在将元素转换为字符串,然后比较它们的UTF-16代码单元值序列时构建的 let chinese = ['应用','服务器','张三','蓝天','随便什么吧'] chines...

Brilliant Me 的博客 8136

JS数组对象——根据日期进行排序Date.parse(),按照时间进行升序或降序排序localeCompare()

排序在后台管理系统对于数据的处理中用得非常多。本期文章重点介绍根据日期排序和根据时间两种排序方法。将用到JavaScript的Date.parse()和localeCompare()方法。

XSL_HR的博客 2万+
上一篇: JS拖拽时禁止点击事件的三种方法
下一篇: 上下两端固定,中间随内容自动撑高的H5代码,达到一定高度中间内容出现滚动条
Qssn丶
博客等级 码龄11年 88粉丝 113原创
评论 1
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值