相关拓展

115 阅读1分钟

常用字符串方法

转换大小写

<script>
    let xiao = 'AsBsfaFfscKCAsaO'
    // 转换成小写
    let res = xiao.toLowerCase()
    // 转换成大写
    let res2 = xiao.toUpperCase()
    console.log(res, res2);
</script>

检索字符串位置

<script>
    let str = 'abcddcfijrnla'
    // 检索当前元素在字符串中第一次出现的索引值
    let index = str.indexOf('d')
    console.log(index);
</script>

提取字符串

<script>
    let str = 'ligoudanzhangcuihuazhaotiezhu'
    // 第一个值:从哪个字母开始截取
    // 第二个值:截取多少个字母
    // 第二个值不写则代表一直截取到最后
    let newStr = str.substr(8, 11)
    console.log(newStr);
</script>

字符串转换成字符串数组

<script>
    let str1 = 'ligoudan zhangcuihua zhaotiezhu'
    let str2 = 'ligoudan,zhangcuihua,zhaotiezhu'
    let str3 = 'ligoudan-zhangcuihua-zhaotiezhu'
    // 括号里的是去掉对应字符串的分隔符,转换后默认是逗号
    let arr1 = str1.split(' ')
    let arr2 = str2.split(',')
    let arr3 = str3.split('-')
    console.log(arr1);
    console.log(arr2);
    console.log(arr3);
</script>

交换数值

<script>
    let a = '1'
    let b = '10';
    // 交换语句的,前面结束语句一定要带分号,否则会报错
    [a, b] = [b, a]
    console.log(a, b);
</script>

常用数组方法

顺序反转

<script>
    let arr = [1, 3, 8, 15, 22, 23, 30, 32]
    console.log(arr.reverse());
</script>

清空数组

<script>
    let arr = [1, 3, 8, 15, 22, 23, 30, 32]
    // 将数组的长度置为0即可清空数组
    drr.length = 0
    console.log(arr);
</script>

数组转字符串

<script>
    let arr = ['李狗蛋', '张翠花', '赵铁柱']
    console.log(arr);
    // 需要用一个变量来接收转换后的结果
    // arrjoin('') 括号里可改变分隔符
    // 括号里所写内容需要用引号包裹起来
    // 传递空字符串即可无缝连接数组中的元素
    let str = arr.join('')
    console.log(str);
</script>

数组排序

<script>
    let arr = [240, 320, 55, 68, 14, 73, 7, 11]
    // 从小到大排序
    arr.sort(function (a, b) {
        return a - b
    })
    // 从大到小排序
    arr.sort(function (a, b) {
        return b - a
    })
    console.log(arr);
</script>

删除数组中指定元素

<script>
    let arr = ['李狗蛋', '张全蛋', '赵铁柱', '王小二']
    // 选中索引为[1],删除2个,并在被删除数组元素的位置追加新的数组元素(不限)
    arr.splice(1, 2, '张翠花', '松哥', '仙女兔')
    console.log(arr);
</script>

展开运算符

<script>
    let arr1 = [1, 2, 3, 4, 5, 6]
    // arr2复制的只是arr1里面的值,并没有将地址整个复制过来,所以当重新赋值的时候,并不会影响到arr其本身的值
    let arr2 = [...arr1]
    arr2[0] = 1000
    console.log(arr1);
    console.log(arr2);
</script>
展开运算符*案例
// 开发当中,我们可能会收到一串数组,求其最大值,此时用普通的方法较难实现,可以利用“展开运算符”来帮我们达成目标
<script>
    let arr = [1, 2, 3, 4, 5, 6,7]
    // console.log(Math.max(...arr));
    console.log(Math.max(...arr));
</script>

遍历方法

forEach遍历

与普通循环差不多,遍历数组

<script>
    let arr = [4, 9, 0, 10, 240, -12, 98]
    let newArr = []
    // v - value值(数组中的每一项)
    // i - 索引
    arr.forEach(function (v, i) {
        newArr.push(v + 10)
    })
    console.log(newArr);
</script>

map遍历

对数组某一项进行增减操作,并返回至新数组

<script>
    let arr = [4, 9, 0, 10, 240, -12, 98]
    let newArr = arr.map(function (v, i) {
    return v + 10
    })
    console.log(newArr);
</script>
map遍历*案例
// 遍历对象,将所有人的年龄+1
<script>
    let arr = [{
        name: '李狗蛋',
        age: 16,
        sex: '男'
    }, {
        name: '张翠花',
        age: 20,
        sex: '女'
    }, {
        name: '赵铁柱',
        age: 25,
        sex: '男'
    }, {
        name: '王小二',
        age: 19,
        sex: '男'
    }]
    let newArr = arr.map(function (v, i) {
        // 将数值中的年龄+1,并重新赋值
        v.age = v.age + 1
        return v
    })
    console.log(newArr);
</script>

filter遍历

过滤数组中符合条件的元素,并返回至新数组

<script>
    // filter 过滤
    let arr = [13, 0, '', 90, 78, '', '']
    // 去掉数组中的空字符串
    let newArr = arr.filter(function (v, i) {
        // return 将符合条件的元素推入新数组
        // 把 不等于 '' 且 不等于 0 的值 返回至新数组
        return v !== '' && v !== 0
    })
    console.log(newArr);
</script>
filter遍历*案例
// 数组去重
<script>
    let arr = [1, 1, 2, 3, 4, 4, 5, 6, 6, 6, 6, 7, 7, 8, 9, 9, 9]
    let newArr = arr.filter(function (v, i) {
        // i 数组当中每一项的索引值
        // 第一轮 arr.indexOf(1) -> 0  i -> 0
        // 第二轮 arr.indexOf(1) -> 0  i -> 1
        // 第三轮 arr.indexOf(2) -> 2  i -> 2
        // 第四轮 arr.indexOf(3) -> 3  i -> 3
        // 第五轮 arr.indexOf(4) -> 4  i -> 4
        // 第六轮 arr.indexOf(4) -> 4  i -> 5
        // 第七轮 arr.indexOf(5) -> 6  i -> 6...
        // 当数组元素第一次出现的位置与索引值相同时,我们判定为是第一次出现,将其返回至新数组
        return arr.indexOf(v) === i
        // .indexOf() 查找数值在数组中第一次出现的位置
    })
    console.log(newArr);
    console.log(arr);
</script>

综合案例

统计字符串中字母出现的次数
<script>
    let str = 'aaashfshsjbaks'
    // 字符串转数组
    let arr = str.split('')
    // 声明一个空对象
    let obj = {}
    arr.forEach(function (v, i) {
        // 判断 刚出现的新建一个,出现过的+1
        if (obj[v]) {
            obj[v] = obj[v] + 1
        } else {
            obj[v] = 1
        }
    })
    console.log(obj);
</script>
转换得到驼峰命名法
<script>
    let str = 'GET-elemenTs-bY-cLAss-nAMe'
    // 1.统一转换成小写
    let newStr = str.toLowerCase()
    // 2.将字符串转换为数组,并去掉中间的中横线
    let arr = newStr.split('-')
    // 3.遍历数组元素,除了索引为'0'不做改变,其余的首字母转换成大写 
    let newArr = arr.map(function (v, i) {
        // 索引不为'0'的进入条件
        if (i !== 0) {
            // v - 数组中的每一项
            // 0 - 数组中每一项中的第一位
            // .substr 只写了一个值的情况下,代表一直截取到最后
            return v[0].toUpperCase() + v.substr(1)
        }
        return v
    })
    // 4.将数组重新转换为字符串,并去掉数组中默认的逗号
    let res = newArr.join('')
    console.log(res);
</script>
截取网站中的字符串并转换成对象
<script>
    let str = 'http://www.heima.com?key0=haha&key1=hello&key2=xixi'
    function getParams(str) {
        // 1.获取?第一次出现的索引值
        let index = str.indexOf('?')
        // 2.从?后面开始截取,一直到最后,得到我们要做变化的值
        let targetStr = str.substr(index + 1)
        // 3.根据'&'拆分将字符串转成数组
        let targetArr = targetStr.split('&')
        // 4.遍历数组,将'='去除
        let newArr = targetArr.map(function (v) {
            return v.split('=')
        })
        // 5.声明一个空对象,再次遍历数组,将数值塞入对象
        let obj = {}
        newArr.forEach(function (v, i) {
            obj[v[0]] = v[1]
        })
        return obj
    }
    console.log(getParams(str));
</script>