JS实现数组按照【数字 > 字符串 >汉字拼音】排序——类似EXEL筛选

支付漏洞防护绕过的一种方式 放完包后就到了提交订单的地方,可以发现,金额确实小了很多,合理的搭配的话还可以更低,再次前进可以发现,金额确实是这么多,后面就不支付了,到此就结束了。也就是说数量可以为负数,但是金额不能为0或者0以下,有什么方法可以绕过这个限制吗,其实并不难,既然可以为负数,只是对金额不能为0或者负数做了限制。我们可以尝试拼接法,利用负数加上正数让他的值变得很低,但是又大于0就可以了,这里利用购物车的结算方法,随机加一些在购物车里。这里为了方便查看数据包,我这边商品的数量选择3,点击立即购买并抓包。 阅读详情

一、实现原理

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

二、实现步骤

//原始数据
var a = ['欧阳鹏','欧阳鹏b','欧阳鹏a', '赵芳', '陈诚', 'a', 'b', '1', '2', '12', '300'];
1、 直接调用a.sort()方法:
>a.sort();
>["1", "12", "2", "300", "a", "b", "欧阳鹏", "欧阳鹏a", "欧阳鹏b", "赵芳", "陈诚"]
2、 调用a.sort(function(a, b){a.localeCompare(b)});
>a.sort(function(a, b){return a.localeCompare(b)})
>["1", "12", "2", "300", "陈诚", "欧阳鹏", "欧阳鹏a", "欧阳鹏b", "赵芳", "a", "b"]

说明:可以看到这个结果离预期已经很近的,但是我希望字符串"a","b"排在汉字前面

3、我们对数字,字符,和汉字分成三块来处理:数字,仅仅字符,汉字三部分来处理
function sort(a, b){
	var n = !isNaN(a - 0), n2 = !isNaN(b - 0);
	// 数字优先
	if (n && n2) {
		return a - b;
	} else if (n) {
		return -1;
	} else if (n2) {
		return 1;
	} 
	
	// 将含有汉字的使用localeCompare排序
	var e = escape(a).indexOf("%u") > -1, e2 = escape(b).indexOf("%u") > -1
	if (e && e2) {
		return a.localeCompare(b);
	} else if (e) {
		return 1;
	} else if (e2) {
		return -1;
	}
	return a.localeCompare(b);
}

结果如下:

["1", "2", "12", "300", "a", "b", "陈诚", "欧阳鹏", "欧阳鹏a", "欧阳鹏b", "赵芳"]

三、备注

  1. 使用escape来判断字符串中是否有汉字实际上并不完全准确,其他需要一个个去判断字节码太麻烦了,不过这种方式暂时可用吧;
  2. 基本数据是跑通了还没有经过更加全面的测试验证;
【UVM实战】第一章:配置UVM环境(以VCS为例),跑通书上的例子(包括清理中间文件方法、使用DVE查看波形方法、命令执行原理探究) 如何配置UVM的VCS运行环境,运行书本上的例子呢?本节将会为你详细解答! 阅读详情

相关推荐

【Claude Code 源码解析教程】第4章:QueryEngine 查询引擎

本章深入解析 Claude Code 的核心引擎——QueryEngine,它是整个对话系统的"心脏",负责管理会话状态、消息处理流程和多轮对话支持。

rengang66的博客 242

JavaScript——牛客网算法No.HJ26】字符串排序字符串里英文字母按字典顺序重新排列,其他字符保持原位)附:详细排坑经历

@No.HJ26 字符串排序 @problem description: 编写一个程序,将输入字符串中的字符按如下规则排序。 规则 1 :英文字母从 A 到 Z 排列,不区分大小写。 如,输入: Type 输出: epTy 规则 2 :同一个英文字母的大小写同时存在时,按照输入顺序排列。 如,输入: BabA 输出: aABb 规则 3 :非英文字母的其它字符保持原来的位置。 如,输入: By?e 输出: Be?y 注意有多组测试数据,即输入有多行,每一行单独处理(换行符隔开的表示不同行) @inp...

JZevin的博客 1万+

华为OD机试双机位C卷-MVP争夺战 (C/C++/Py/Java/Js/Go)

华为OD机试(机考)双机位C卷 【MVP争夺战】,提供C语言、Java、C++、Python、Go、JavaScript源码实现,并提供完整思路讲解,以及在线OJ模拟做题。华为OD机试 - MVP争夺战,

qq_45776114的博客 1149

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

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

細水、長流√的专栏 4878

JavaScript】localeCompare 方法详解

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

lph159的博客 1959

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

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

first_shun的博客 3万+

javaScript 中的localeCompare方法及其使用

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

m0_69097184的博客 4138

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

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

m0_64455070的博客 3017

javascript基础学习系列六十二:localeCompare()方法

在这里,字符串"yellow"与 3 个不同的值进行了比较:“brick”、“yellow"和"zoo”。“yellow"等于"yellow”,因 此"localeCompare()"返回 0。最后,"zoo"在"yellow"后面,因此 localeCompare()返回-1。localeCompare()的独特之处在于,实现所在的地区(国家和语言)决定了这个方法如何比较字符串。最后一个方法是 localeCompare(),这个方法比较两个字符串,返回如下 3 个值中的一个。

wanmeijuhao的博客 976

leetcode刷题知识点总结(刷题必备)

leetcode刷题知识点总结(刷题必备)

ingenuou_的博客 3123

js按照数字-字符-汉字拼音排序

方法一:sort() 不传参:是按照字符编码的顺序进行排序(如有必要应把数组的元素都转换成字符串) 传参:需要提供比较函数,比较函数应该具有两个参数 a 和 b,其返回值如下: 若 a 小于 b,在排序后的数组中 a 应该出现在 b 之前,则返回一个小于 0 的值。 若 a 等于 b,则返回 0。 若 a 大于 b,则返回一个大于 0 的值。 let arr = ['张三','李四ll','王五ww', '阿狸', '咚咚','1', '2', '3','a', 'b']; let resul

故里的博客 842

JavaScript二维数组排序说开去(2)

从上一篇文章里面我们已经知道了,需要通过sort函数,定义自己的排序比较函数。sort会回调这个函数,在排序时逐个比较元素。 那么问题来了,如果我想比较多个列,至少比较2列,使得其有效排序, 如果第2列是个字符串,这样写还行吗?不行。字符串相减,结果是NaN,not a number。那怎么办? 当然是写一个字符串排序函数了。先看以下第一版: function strcomp(a,b){ if( !(a instanceof Array) || !(b instanceof Array) ){ret

tjzzy的专栏 9406

JS字符串数字或对象数组进行排序

JS字符串数字或对象数组进行排序

qq_43485171的博客 5954

js 数组对象属性排序

出处:https://www.cnblogs.com/yuwenjing0727/p/6856991.html   js sort方法根据数组中对象的某一个属性值进行排序 sort方法接收一个函数作为参数,这里嵌套一层函数用来接收对象属性名,其他部分代码与正常使用sort方法相同. var arr = [ {name:'zopp',age:0}, {name:'gpp...

dinghuan2011的专栏 6987

js中的数组对象排序

js中的数组对象排序

HCL_world的博客 2889

JavaScript数字数组进行排序

JavaScript的Array.sort()方法被用来就地数组元素进行排序,并返回排序后的数组。此函数以字符串格式对元素进行排序。它对字符串数组有效,但对数字无效。例如:如果数字字符串排序。例: 示例:本示例以字符串格式对数组元素进行排序。 输出: 那么,如何对数字数组元素进行排序?有两种方法可以对数字数组进行升序排序。使用比较功能通过创建循环使用比较功能:我们可以创建一个比较功能,该功能返回负值,零值或正值。句法:联联周边游 负值(a> b)=> a将放置在b之前零值(a ==

xiaoweids的博客 1172

js数字数组和对象数组排序

JavaScript中经常需要对数组进行排序: 常见的需要排序数组数字数组,对象数组 数字数组:[1,2,3,4,5,6,7,8…] 对象数组:[obj1,obj2,obj3,obj4…] 解决方法:js自身拥有的sort(); 下图是JavaScript对sort()方法的定义: 其中sortby参数是我们需要注意的重点: 最常见的排序方式分为升序(asc)和降序(desc): //...

banjing_1993的博客 3437

数组对象中根据姓名按照数字字母,中文的顺序排序,中文部分按照字母拼音排序

首先想到按照字母的unicode编码排序: Unicode编码范围如下: | 类型 | 16进制范围 | 10进制范围 | 数字 |【0x30,0x39】 | 【48,57】 | 大写字母|【0x41,0x5a】 | 【65,90】 | 小写字母|【0x61,0x7a】 | 【97,122】 | 汉字 |【0x4e00,0x9fa5】 | ...

娃哈哈_的博客 3236

按照名字首字母进行排序,首字母相同则向后继续比较

import pypinyin stu_list = [{"name": "李啊四", "gender": 1}, {"name": "张操三", "gender": 1}, {"name": "张啊三", "gender": 1}, {"name": "张吧三", "gender": 1}, {"name": "啊三", "gender": 1}, {"name": "啊吧三", "gender": 1}, {"name": "王五", "gender": 1}

我就叫贝塔 5420

数组按照中文名称排序

var arr = ['南京', '北京', '上海', '杭州', '深圳']; function sortChinese (arr) { // 参数: 排序数组 arr.sort(function (item1, item2) { return item1.localeCompare(item2, 'zh-CN'); }) } sortChinese(arr) ...

总结,交流,记录,成长 1860

无涯教程-Javascript - localeCompare()函数

此方法返回一个数字,该数字指示引用字符串是在排序顺序中出现在给定字符串之前还是之后,或者与给定字符串相同。

无涯教程 1490

中国全国主要河流水文监测站点地理坐标信息表

这份电子表格涵盖了全国2412个水文流量站的详细信息,具体包括站号、站名、所属河流名称、水系分类、流域范围、精确的经纬度坐标、站点具体位置、行政区划代码、站点类别、报汛级别、建站时间以及管理单位等。这些丰富且全面的数据为水文水资源领域的科研人员开展各类相关科研工作提供了极大的便利,能够助力他们更高效地进行研究活动。

installer vs2022

installer vs2022

上一篇: 排序算法——小顶堆
下一篇: 纯css,div隐藏滚动条,保留鼠标滚动效果
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值