生成数组唯一标识,数组任意更改顺序和字段,适合表单版本标识生成

10 篇文章 0 订阅
3 篇文章 0 订阅

生成数组唯一标识,数组任意更改顺序和字段,适合表单版本标识生成

  • 该数组唯一标识生成算法,仅适合数组元素值唯一
  • 最近为了搞一个自定义表单,并且为该自定义表单设置一个唯一的版本标识
  • 例如:有那么一个需求,例如我每次提交 字段所在的顺序是不一样的
// 例如:有 字段A:1, 字段B:2, 字段C:3 并且每次提交顺序
let arrA = [1,2,3];
let arrB = [2,1,3];
let arrC = [3,2,1];

假设每次提交的顺序都不一致

  • 如果采用字符串拼接的方式,则每次提交的顺序不同
  • 加密后就会导致 Hash值不同
// 错误展示
let arrA = [1,2,3]; // 123:md5
let arrB = [2,1,3]; // 213:md5
let arrC = [3,2,1]; // 321:md5

那么大佬可能看出来了,下面展示真正的实现方式

  • 通过字段值累加的方式得出一个唯一的值
  • 那么就有小伙伴要问了:假如我的是字符串呢,又或者是字符串加数字或符号呢?
  • 那么就得使用进制算法将字符串转换成 正整数 了
  • 详细请看我发的文章:(进制算法原理)https://blog.csdn.net/u014771745/article/details/102829562

话不多说:放秃顶毒!!!

// 假设每个数组项都是唯一不重复的数字(如果非数字请用进制算法换算成数字)
// 假设数组
let arrA = [1,2,3]; // 6=Sum:md5  # 是不是一致
let arrB = [2,3,1]; // 6=Sum:md5  # 是不是一致
let arrC = [3,1,2]; // 6=Sum:md5  # 是不是一致
let arrD = [3,4,1]; // 8=Sum:md5  # 不一样的数组,当然不一样。

/**
 * 获取数组唯一标识
 */
function arrayHash(arr) {
    let sumNum = 0;
    for(let i=0;i < arr; i ++) {
        sumNum += arr[i]; // 如果数组元素是字符串和数字 请采用进制算法转换成整数
    }
    let hash = md5(sumNum); // MD5 加密成Hash
    return hash;
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值