js字符串方法练习----下

Posted 安雁-zzq

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了js字符串方法练习----下相关的知识,希望对你有一定的参考价值。

各种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>

 

以上是关于js字符串方法练习----下的主要内容,如果未能解决你的问题,请参考以下文章

JavaScript笔试题(js高级代码片段)

js字符串方法练习----上

js经常用到的代码片段

练习错误

几个关于js数组方法reduce的经典片段

JS基础回顾,小练习(去除字符串空格)