各种api,很容易混淆,希望大家找到合适的适合自己的方法快速记忆!!!
<script> // 11、封装函数 删除数组中的假值 例如:输入bouncer([7, "ate", "", false, 9]); 返回[7,"ate",9] // 假值:undefind null "" false 0 NaN function bouncer(arr) { // 获取数组长度 var len = arr.length; // 从后往前遍历数组中每一项,从前往后如果假值被截取下标会发生改变,造成不不要的麻烦 for (var i = len - 1; i >= 0; i--) { // 判断是不是假值,是截取 if (!arr[i]) { arr.splice(i, 1) // splice会改变原数组 } } return arr; } console.log(bouncer([7, "ate", "", false, 9])); // 12、比较字符串,如果第一个字符串中包含了第二个字符串的所有字母,则返回`true`,否则返回`false // 例如:输入compare(["hello", "heo"]); 返回true function compare(arr) { var len = arr[1].length; // 获取数组第二项值的长度 // 遍历数组第二项的值,取出每个字母 for (var i = 0; i < len; i++) { // 在数组中第一项查找 if (arr[0].indexOf(arr[1][i]) == -1) { // 如果在数组第一项中查不到第二项的某一个字母,返回false return false; } } return true; // 如果跑到这一步,则说明有查找到,返回true } console.log(compare(["hello", "heo"])); // 13、封装函数 用指定字符串替换字符串的 例如:输入replaceStr('l am anyan anyan anyan','anyan','sixsixsixx') function replaceStr(str, origin, target) { if (str.indexOf(origin) == -1) return str; // 如果在字符串中查找不到制定的字符串直接return // 使用回调函数,防止在字符串中查找处多个结果 return replaceStr(str.replace(origin, target), origin, target) } var x = replaceStr('l am anyan anyan anyan', 'anyan', 'sixsixsixx'); console.log(x); // 14、封装函数 实现push方法 原数组 function myPush() { // 通过遍历 for (var i = 1; i < arguments.length; i++) { arguments[0][arguments[0].length] = arguments[i] } return arr } var arr = [1, 2, 3]; var newArr = myPush(arr, 44, 66, 77); console.log(newArr); // 15、封装函数 获取字符串中的数字,并按照数组输出 例如:输入returnArr('shdkfh1234cxj5665sdkj2121') 返回[1234,5665,2121] function returnArr(str) { var arr = []; var len = str.length; // 编码数字 var num = 0, num2 = 0; var a = 0, b = 0; iterPoint: for (var i = 0; i < len; i++) { num = str.charCodeAt(i); // 获取字符编码 a = i //根据编码判断是不是数字 if (48 <= num && num <= 57) { // 为true表示字符是数字 // 内层循环查询数字结束的索引 for (var j = i; j < len; j++) { num2 = str.charCodeAt(j); // 判断编码不是数字的索引才是结束的位置 if (!(48 <= num2 && num2 <= 57) || j == len - 1) { b = (j == len - 1) ? (j + 1) : j; // 为true 表示不是数字 arr.push(str.slice(a, b)); // 下一次执行外层循环的时候从j的位置开始 i = j; continue iterPoint; } } } // false 表示字符串不是数字 } return arr; } console.log(returnArr('shdkfh1234cxj5665sdkj2121')); // 16、封装函数 查找出第一个只出现一次的字符 例如unquie("wuwei"); 返回"u" function unquie(str) { var len = str.length; // 遍历字符串中的每一项, for (var i = 0; i < len; i++) { var char = str[i]; // 从两头开始查找,如果相等则说明下标一致,则为第一次出现的字符 if (str.indexOf(char) == str.lastIndexOf(char)) { return str[i]; } } } // console.log(unquie("我叫安雁,你呢?我叫猪")); // 17、封装函数 实现字符串去重 例如:输入deweightStr("anyan"); 返回'any' function deweightStr(str) { var len = str.length; for (var i = 0; i < len; i++) { var char = str[i]; if (str.indexOf(char) !== str.lastIndexOf(char)) { str = str.replace(char, ""); i--; } } return str; } console.log(deweightStr("anyan")); // 18、封装函数 输出指定字符串的长度:提示:1. 一个中文占2个字节,一个英文占一个字节 // 2.如果Unicode编码值小于等于255是英文,如果unicode编码值大于255是中文 function byteLen(str) { var len = str.length; // 1、获取字符串长度 var num = 0; // 2、定义变量接受长度 // 3、遍历获取每个字符的字节 for (var i = 0; i < len; i++) { str.charCodeAt(i) <= 255 ? num += 1 : num += 2; } return num; } console.log(byteLen("今天是2019年10月28日")); // 19、封装函数 获取浏览器url中的数据 要求:函数返回值是一个对象 // 示例地址:https://www.baidu.com/s?ie=utf-8&f=3&rsv_bp=1&tn=baidu&wd=wuwwei // &rsv_pq=becd1331000082fd&rsv_t=0f84&rqlang=cn&rsv_enter=1&rsv_sug3=14&rsv_sug1=12&rsv_sug7=100&rsv_sug2=0&rsp=0&inputT=9344&rsv_sug4=3518432 // 例如:输入getUrl(url)['wd']; 返回"anyan" function getUrl(url) { var obj = {}; var str = url.split('?')[1] var arr = str ? str.split('&') : [] var newArr = [] for (var i = 0; i < arr.length; i++) { newArr = arr[i].split('=') obj[newArr[0]] = newArr[1] } return obj; } var url = "https://www.baidu.com/s?ie=utf-8&f=3&rsv_bp=1&tn=baidu&wd=anyan&rsv_pq=becd1331000082fd&rsv_t=0f84&rqlang=cn&rsv_enter=1&rsv_sug3=14&rsv_sug1=12&rsv_sug7=100&rsv_sug2=0&rsp=0&inputT=9344&rsv_sug4=3518432" var obj = getUrl(url)['wd'] console.log(obj) </script>