SOURCE

/**
 * 对不是字符串,数字类型的数据,会进行jsonencode
 * 字符串按照key升序生成排序使用&符号进行分割a=1&b=2格式拼接生成一个字符串,给加密工具进行加密
 * @params data 需要进行加密计算的数据内容
 * @params clourse 加密函数
 */
function signGenerate(data,clourse=function(el){
return encodeURIComponent(el);
}) {
    if (typeof data == 'object' && Object.keys(data).length > 0) {
        let _data = [];
        for (let key in data) {
            if (data.hasOwnProperty(key)) {
                let val = data[key];
                if (typeof val != 'string' && typeof val != 'number') {
                    val = JSON.stringify(val)
                }
                _data.push({
                    key: key,
                    val: val
                })
            }
        }
        if (!_data) {
            return data;
        }
        _data.sort((a, b) => {
                //  a.sort(function(a,b){return a.localeCompare(b)});正序排列 
                //a.sort(function(a,b){return b.localeCompare(a)});  反序排列
                return a.key.localeCompare(b.key)
        })
        let signString = '';
        for(let el of _data)
        {
            signString +=`${el.key}=${el.val}&`;
        }
        signString = signString.slice(0,-1);
        data['sign'] = clourse(signString);
    }
    return data;
}


console.log(signGenerate({ "key": 66, "b": 2 }));
console 命令行工具 X clear

                    
>
console