/** * æœ¬ç®—æ³•æ¥æºäºŽç®€ä¹¦å¼€æºä»£ç ,详è§ï¼šhttps://www.jianshu.com/p/fdbf293d0a85 * å…¨å±€å”¯ä¸€æ ‡è¯†ç¬¦ï¼ˆuuid,Globally Unique Identifier),也称作 uuid(Universally Unique IDentifier) * 一般用于多个组件之间,ç»™å®ƒä¸€ä¸ªå”¯ä¸€çš„æ ‡è¯†ç¬¦,或者v-for循环的时候,如果使用数组的indexå¯èƒ½ä¼šå¯¼è‡´æ›´æ–°åˆ—表出现问题 * 最å¯èƒ½çš„æƒ…å†µæ˜¯å·¦æ»‘åˆ é™¤itemæˆ–è€…å¯¹æŸæ¡ä¿¡æ¯æµ"ä¸å–œæ¬¢"并去掉它的时候,会导致组件内的数æ®å¯èƒ½å‡ºçް错乱 * v-for的时候,推è使用åŽç«¯è¿”回的idè€Œä¸æ˜¯å¾ªçŽ¯çš„index * @param {Number} len uuid的长度 * @param {Boolean} firstU å°†è¿”å›žçš„é¦–å—æ¯ç½®ä¸º"u" * @param {Nubmer} radix 生æˆuuid的基数(æ„味ç€è¿”回的å—符串都是这个基数),2-二进制,8-八进制,10-å进制,16-åå…进制 */ function guid(len = 32, firstU = true, radix = null) { let chars = '0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz'.split(''); let uuid = []; radix = radix || chars.length; if (len) { // 如果指定uuid长度,åªæ˜¯å–éšæœºçš„å—符,0|x为ä½è¿ç®—,能去掉xçš„å°æ•°ä½,è¿”å›žæ•´æ•°ä½ for (let i = 0; i < len; i++) uuid[i] = chars[0 | Math.random() * radix]; } else { let r; // rfc4122æ ‡å‡†è¦æ±‚返回的uuidä¸,æŸäº›ä½ä¸ºå›ºå®šçš„å—符 uuid[8] = uuid[13] = uuid[18] = uuid[23] = '-'; uuid[14] = '4'; for (let i = 0; i < 36; i++) { if (!uuid[i]) { r = 0 | Math.random() * 16; uuid[i] = chars[(i == 19) ? (r & 0x3) | 0x8 : r]; } } } // 移除第一个å—符,并用u替代,å› ä¸ºç¬¬ä¸€ä¸ªå—符为数值时,该guuidä¸èƒ½ç”¨ä½œid或者class if (firstU) { uuid.shift(); return 'u' + uuid.join(''); } else { return uuid.join(''); } } export default guid;