美文网首页
JS组合运算 从64位大小写字符中随机选取4位作为不重复的ID

JS组合运算 从64位大小写字符中随机选取4位作为不重复的ID

作者: 袁俊亮技术博客 | 来源:发表于2017-12-06 14:17 被阅读46次

JS组合运算 从64位大小写字符中随机选取4位作为不重复的ID

标签(空格分隔): Node.js


// 获取64个大小写字符
const get64Chars = () => {
    const chars = [];
    // 获取
    for (var i = 0; i < 25; i++) {
        let upChar = String.fromCharCode(65 + i);
        let loChar = String.fromCharCode(65 + 32 + i);
        chars.push(upChar);
        chars.push(loChar);
    }
    return chars;
}

/**
 * [组合运算]
 * @param  {array} arr [进行组合运算的数组]
 * @example [1,3,2]
 * @param  {number} num [每几个元素为一组]
 * @return {array}     [返回组合集合]
 * @example [[1,3],[1,2],[3,2]]
 */
const combo = (arr,num)=>{
    let result = [];
    let range = (r,_arr)=>{
        if (r.length == num) {
            result.push(r)
        } else {
            let l = r.length;
            for (var i = 0, len = _arr.length - num + l; i <= len; i++) {
                range(r.concat(_arr[i]), _arr.slice(i + 1))
            }
        }
    }
    range([],arr);
    return result;
}

/**
 * 获取随机的ID值
 * @param {*} number 第几位注册的用户
 */
const renderID = (number)=>{
    let chars = get64Chars();
    let res = combo(chars, 4);
    let strArr = res[number];
    let str = '';
    for(let i = 0;i<strArr.length;i++){
        str += strArr[i];
    }
    return str;
}

// 测试
console.log(renderID(100005));

参考文章

相关文章

网友评论

      本文标题:JS组合运算 从64位大小写字符中随机选取4位作为不重复的ID

      本文链接:https://www.haomeiwen.com/subject/crokixtx.html