javascript 数组按名称的字母顺序排序
1. 出现场景: 支付系统需要生成签名加密,有一次我接了一个接口,需要前端的同事传递一个sign参数(表单值按顺序拼接,并拼上私钥值进行md5运算)
问题: js 不像java 有map.list 等集合框架,也没有很现成的排序方法,
js 也不像java 提供jca 等加密框架,对各种加密算法进行支持
解决: 1. 于是就干脆手写了一个javascript 的排序方法,
2.在网上找到一个牛人写的javascript 的 md5.js (此页面还包含其他加密算法的javascript实现)
自定义手写的javascript 的排序js , sortArrString.js
主方法为getKeySort(传入的数组)对象,返回拍过序的数组对象,
内部排序算法是通过: 冒泡排序
规则 :是按字母顺序升序进行排序,按参数名的第一个字母进行比较,如果相同则比较第二个,直到排出大小
js 的 == 可以比较字符串的大小
/*** 测试demo ,假设传入的情况* 是数组,返回数组按字母顺序升序* @author kzcming* * var signStr = {account:"97987985",username:"0004",pay_star_type:"pay_star_ggm",service_type:"gm_ibc",game_code :"1",
}getKeySort(getObjectKey(signStr));*//*** 传入对象 ,返回对象的属性数组*/
function getObjectKey(obj){return Object.keys(obj);
}/*** 传入数组* 按字母顺序,升序* 冒泡排序*/
function getKeySort(strArr){var count = 0;var compareInt = 0;for (var i = 0; i < strArr.length; i++) {for (var j = 0; j < strArr.length - 1 - i; j++) {/*if(strArr [j].substring(0,1) > strArr[j + 1].substring(0,1)){var temp = strArr[j + 1];strArr[j + 1] = strArr[j];strArr[j] = temp;}if(strArr [j].substring(0,1) == strArr[j + 1].substring(0,1)){if(strArr [j].substring(1,2) > strArr[j + 1].substring(1,2)){var temp = strArr[j + 1];strArr[j + 1] = strArr[j];strArr[j] = temp;}}*/compareToIndexValue(strArr,compareInt,j);count ++ ;} }/*console.log("遍历次数:"+count);*//*console.log(strArr);*/return strArr;
}/*** 根据首字母 排序,如果首字母相同则根据第二个字母排序...直到排出大小*/
function compareToIndexValue(arr,int,arrIndex){if(arr[arrIndex].substring(int,int+1) == arr[arrIndex + 1].substring(int,int+1)) compareToIndexValue(arr,int+1,arrIndex);//如果第一位相等,则继续比较第二个字符else if(arr[arrIndex].substring(int,int+1) > arr[arrIndex + 1].substring(int,int+1)) {var temp = arr[arrIndex + 1];arr[arrIndex + 1] = arr[arrIndex];arr[arrIndex] = temp}/*else if(arr[arrIndex].substring(int,int+1) < arr[arrIndex + 1].substring(int,int+1)) return;*/return;
}/*** 输入排序过后的key=value 值数组,用 "&" 字符拼接为字符串*/
function getKeyValueSortStr(strArr){var longStr = "";for (var str in strArr) {longStr += strArr[str] + "&";}return longStr.substring(0,longStr.length - 1);//移除最后一个 & 符号
}
我的调用过程
需要注意的是:jquery的serialize()方法,是序列化表单的,通常调用此方法后会直接请求给后台,因此此方法会将一些参数url编码化,会出现%开头的特殊符号和一些其他符号,需要转换成原始值才能签名正确
//实现本地化签名,不需要 在另外一个jsp 页面计算签名function testMD2(){var formParam = $("#bankPay").serialize();//获得参数的 key = value & key2 = value2形式var paraArr = formParam.split("&");//获得key=value 形式值的数组for(var i = 0;i < paraArr.length; i ++){if(paraArr[i].indexOf("=") + 2 > paraArr[i].length){//移除value 为空的参数paraArr.splice(i, 1);i --;}}var sortParaArr = getKeySort(paraArr);var paraStr = getKeyValueSortStr(sortParaArr).replace(/\+/g," ").replace(/%3A/g,":");//得到字符串 , + 是特殊字符,需要转义符号 \console.log(paraStr);var sign = hex_md5(paraStr + priKey);$("#sign").val(sign);}
hex_md5 为md5.js 中的方法
javascript 数组按名称的字母顺序排序相关推荐
- 在 JavaScript 中按字母顺序排序 - 如何在 JS 中按名称排序
有时您可能有一个单词数组,您希望按字母顺序(从 az 开始)对每个单词进行排序.或者,您可能有一个包含用户信息(包括名称)的对象数组,例如,您希望在其中按用户名称对用户进行排序. 我们可以在 Java ...
- JavaScript(JS)有一组英文歌曲,按照歌曲名称的字母顺序从“A”到“Z”顺序排列,保存在一个数组中。
JavaScript有一组英文歌曲,按照歌曲名称的字母顺序从"A"到"Z"顺序排列,保存在一个数组中.网上搜下英文歌,现在增加一首新歌,将他插入数组,并保持原来 ...
- php 字母顺序排序,按字母顺序排序数组php
因为标题建议我想在php中按字母顺序排序数组. $arr = array( 'k' => 'pig', 'e' => 'dog' ) 会成为 $arr = array( 'e' => ...
- php 对字母排序,PHP按字母顺序排序
在MySQL中: SELECT * FROM table ORDER BY name ASC 在PHP中: $fruits = array("lemon", "orang ...
- java abc排序_Java实现按照大小写字母顺序排序的方法
本文实例讲述了Java实现按照大小写字母顺序排序的方法.分享给大家供大家参考,具体如下: 这里排序需要得到的结果按字母顺序.如:a-----z... import java.util.*; /** * ...
- 对只含英文字母的字符串按字母顺序排序,相同的字母大写在前,小写在后
对只含英文字母的字符串按字母顺序排序,相同的字母大写在前,小写在后 如 AxcBsYuC 排序得 ABCcxY 提示:利用map实现自定义的ascii码表.再用冒泡法排序. 在这里插入代码片 publ ...
- android 字母排序,android – 按字母顺序排序列表
我在一个应用程序上工作,我用已安装的应用程序创建一个列表,让用户选择一个.除了一件事,我一切都在工作;按字母顺序排序.这是我正在使用的代码: private List loadInstalledApp ...
- html列表按时间排序代码_按字母顺序排序的列表
有时候你需要自制一份课件PPT或者手写笔记的关键词索引,用来开卷考试查阅PPT或者复习查阅笔记时能快速定位查阅内容位置,这时你可能想要一个按字母顺序排序的列表来帮助构建需要的索引. LaTeX自身的i ...
- java丶对数组值按首字母进行排序
对数组值按首字母进行排序: public class Test {public static void main(String[] args) {List<String> list = A ...
最新文章
- C++之virtual 方法
- 多个基因集富集结果泡泡图绘制展示
- gatsby_与Gatsby一起使用React Context API
- 女生做产品经理好吗_谁说女生不适合做产品经理?
- listctrl 的使用技巧
- python爬虫从入门到放弃-python 爬虫《从入门到放弃》
- 190216每日一句
- python 数据文件上传到ftp服务器
- AMAZEUI之iscroll 下滑刷新/上拉加载更多实例
- go语言-channel使用(二十一)
- Python-字符串
- matlab 差分方程的解(解答qq网友)
- java四则运算简单界面版
- 量子竞赛下一步:在应用中体现量子优势
- 什么是软件测试及其分类?
- HTML制作一个介绍自己家乡的网站——贵阳,排版整洁,内容丰富,主题鲜明
- (BAT批处理)批量文件夹重命名,要求是在原文件夹名前加上英文字母前缀aa
- HDU 4069 Squiggly Sudoku DLX 精确覆盖
- 基础理论—需求定律与供给定律分析…
- 2020年哨兵数据批量下载(USGS)