js 常用方法
阿新 • • 發佈:2021-07-08
1、url引數轉物件
/** * @param {string} url * @returns {Object} */ // 方法一: function param2Obj(url) { const search = decodeURIComponent(url.split("?")[1]).replace(/\+/g, " "); if (!search) { return {}; } const obj = {}; const searchArr = search.split("&"); searchArr.forEach((v) => { const index = v.indexOf("="); if (index !== -1) { const name = v.substring(0, index); const val = v.substring(index + 1, v.length); obj[name] = val; } }); return obj; } // 使用 let obj = param2Obj(window.location.href); console.log(obj); // {token: "aa", pass: "1321daf413", zhanghao: "you"} // 方法二: /** * @param {string} url * @returns {Object} */ function getQueryObject(url) { url = url == null ? window.location.href : url; const search = url.substring(url.lastIndexOf("?") + 1); const obj = {}; const reg = /([^?&=]+)=([^?&=]*)/g; search.replace(reg, (rs, $1, $2) => { const name = decodeURIComponent($1); let val = decodeURIComponent($2); val = String(val); obj[name] = val; return rs; }); return obj; }
2、json物件轉url引數
/** * @param {Object} json * @returns {Array} */ function param(json) { if (!json) return ""; return cleanArray( Object.keys(json).map((key) => { if (json[key] === undefined) return ""; return encodeURIComponent(key) + "=" + encodeURIComponent(json[key]); }) ).join("&"); } // 使用 let a = { name: "aaa", pass: "123456" }; console.log(param(a)); // name=aaa&pass=123456
3、生成唯一字串
function createUniqueString() {
const timestamp = +new Date() + "";
const randomNum = parseInt((1 + Math.random()) * 65536) + "";
return (+(randomNum + timestamp)).toString(32);
}
4、html轉text
function html2Text(val) { const div = document.createElement("div"); div.innerHTML = val; return div.textContent || div.innerText; } // 使用 let p = `<p>你好呀呵呵呵 <span>aaaa</span></p>`; console.log(html2Text(p)); // 你好呀呵呵呵 aaaa
5、判斷元素是否含有某個類
/**
* Check if an element has a class
* @param {HTMLElement} elm
* @param {string} cls
* @returns {boolean}
*/
function hasClass(ele, cls) {
return !!ele.className.match(new RegExp("(\\s|^)" + cls + "(\\s|$)"));
}
6、給元素新增某個類
/**
* Add class to element
* @param {HTMLElement} elm
* @param {string} cls
*/
function addClass(ele, cls) {
if (!hasClass(ele, cls)) ele.className += " " + cls;
}
7、刪除元素的某個類
/**
* Remove class from element
* @param {HTMLElement} elm
* @param {string} cls
*/
function removeClass(ele, cls) {
if (hasClass(ele, cls)) {
const reg = new RegExp("(\\s|^)" + cls + "(\\s|$)");
ele.className = ele.className.replace(reg, " ");
}
}
8、獲取字串的位元組長度
/**
* @param {string} input value
* @returns {number} output value
*/
function byteLength(str) {
// returns the byte length of an utf8 string
let s = str.length;
for (var i = str.length - 1; i >= 0; i--) {
const code = str.charCodeAt(i);
if (code > 0x7f && code <= 0x7ff) s++;
else if (code > 0x7ff && code <= 0xffff) s += 2;
if (code >= 0xdc00 && code <= 0xdfff) i--;
}
return s;
}