论如何优雅的取随机字符串
Math.random().toString(16).substring(2) // 13位
Math.random().toString(36).substring(2) // 11位
toString()方法
数字类型的toString()方法可以接收表示转换基数(radix)的可选参数,如果不指定此参数,转换规则将是基于十进制。同样,也可以将数字转换为其他进制数(范围在2-36)
字符串截取 三种方法对比
substring()、slice()、substr()
stringObject.substring(start,stop)
返回值
一个新的字符串。包括字符串 stringObject 从 start 开始(包括 start)到 end 结束(不包括 end)为止的所有字符。
substring() 不接受负的参数
参数 start 与 stop 相等,那么该方法返回的就是一个空串(即长度为 0 的字符串, start 比 stop 大,那么该方法在提取子串之前会先交换这两个参数(start>stop)。
stringObject.slice(start,end)
下标从 0 开始 -1 指字符串的最后一个字符
返回值
一个新的字符串。包括字符串 stringObject 从 start 开始(包括 start)到 end 结束(不包括 end)为止的所有字符。
stringObject.substr(start,length)
返回值
一个新的字符串。包括字符串 stringObject 从 start 开始的 length 个字符。如果没有指定 length,那么返回的字符串包含从 start 到 stringObject 的结尾的字符。
start 必须是数值。如果是负数,那么该参数声明从字符串的尾部开始算起的位置。也就是说,-1 指字符串中最后一个字符,-2 指倒数第二个字符,以此类推。
String.slice() 与 Array.slice()
假设已知一个数组长度为len,则参数的有效范围为[-len,len-1],
-len和0为第一个元素的下标,
-1和len-1表示最后一个元素的下标。
slice()总共有两个参数,
- 不填参数返回所有元素;
- 若只填一个参数x,则x为起始元素的下标(起始元素一定会被截取),返回x之后的所有元素为新的数组(包括x)
- 若x>=len,则返回空数组,即什么也没截取
- 若x<=-len||x=0,则截取全部;
- 若填写两个参数x,y(x为起始元素下标值,y为结束元素下标值。注:不截取下标为y的元素)
- (有效范围内):x,y同号时(此处把0归为正),x
var arr = new Array("a","b","c","d");//len = 4 有效[-4,3]
console.log(arr.slice(1,3));//["b","c"]包括b不包括d x<y
console.log(arr.slice(-3,-2));//["b"] x<y
console.log(arr.slice(0,-2));//["a","b"] |x|+|y|<4
console.log(arr.slice(-3,2));//["b"] |x|+|y|>4
console.log(arr.slice(4,2));//[] x>4 一定为空
console.log(arr.slice(-3,0));//[] y=0 一定为空
console.log(arr.slice(-3,-4));//[] y<=-4 一定为空
console.log(arr.slice(1,100));//["b","c","d"]y>len-1能取到最后一个元素
以上包括所有情况,总的原则就是保证下标为y的元素要在x的后面才可截取
var n = 17;
n.toString();//'17'
n.toString(2);//'10001'
n.toString(8);//'21'
n.toString(10);//'17'
n.toString(12);//'15'
n.toString(16);//'11'