常见和字符串和数组的方法

75 阅读4分钟

常见和字符串和数组的方法

*常用字符串方法*

  • toLowerCase(): 把字符串转为小写,返回新的字符串
  • toUpperCase(): 把字符串转为大写,返回新的字符串
  • indexOf(): 返回某个指定的子字符串在字符串中第一次出现的索引位置,如果没有查找到则返回-1
  • substr(index,howmany): 返回从指定下标开始指定长度的的子字符串
  • split(): 把字符串分割成字符串数组

*常用数组方法*

  • arr.reverse() 反转数组,会改变原数组,并返回反转后的新数组

  •  let arr = [4, 9, 0, 10, 240, -12, 98]
     arr.sort(function (a, b) { return a - b }) 数组升序排列 会改变原数组,并返回反转后的新数组
    arr.sort(function (a, b) { return b - a }) 数组降序排列 会改变原数组,并返回反转后的新数组
    
  • arr.length = 0 清空数组

  • arr.join(),将数组的每一项用指定字符连接形成一个字符串。默认连接字符为 “,” 逗号

  •  let arr = ['李狗蛋', '张翠花', '赵铁柱', '王小二']
    
  • arr.splice(index,howmany,arr1,arr2...) ,删除元素并添加元素,从index位置开始删除howmany个元素,并将arr1、arr2...数据从index位置依次插入。howmany为0时,则不删除元素

遍历方法

  • Array.forEach(function (v, i){ }),用于调用数组的每个元素,并将元素传递给回调函数。原数组不变

  • Array.map(function (v, i){ }),原数组的每一项执行函数后,返回一个新的数组。原数组不变

    • [1,2,3,4,5,6] 将原有数组中每一项的数据加10返回新数组

    • ['13','3','79','1','10','24','78','2'] 个位数补0返回新数组

     let arr = [{
                name: '李狗蛋',
                age: 16,
                sex: '男'
            }, {
                name: '张翠花',
                age: 20,
                sex: '女'
            }, {
                name: '赵铁柱',
                age: 25,
                sex: '男'
            }, {
                name: '王小二',
                age: 19,
                sex: '男'
            }]
  • 遍历数组,给所有人的age+1 返回新数组

  • Array.filter(function(v,i){}),过滤数组中,符合条件的元素并返回一个新的数组

    • 去掉[13, 0, '', 90, 78, '' , ''] 的空字符串
    • 去掉[13, 0, '', 90, 78, '' , ''] 的空字符串和0值
    • 数组去重 [1,1,2,3,4,4,5,6,6,6,6,7,7,8,9,9,9]

案例

1.统计字符串 'abcoefoxyozzopp' 中每个字符出现的次数(字符串可以随意设置啊)

// 目标:给用户返回这种格式的数据:{a:4,b:3,c:6}
     let str = 'abcoefoxyozzopp'
        function getCount(str) {
            // 将字符串转换为数组
            let arr = str.split('')
            // 声明一个空对象存储各个字符出现的次数
            let obj = {}
            // 对数组进行遍历 v 代表当前遍历项
            arr.forEach(v => {
                // obj[v] 相当于 obj.a  判断如果对象中有指定字符的属性名则在当前数量上加一 
                //否则给对象创建一个新键名
                if (obj[v]) {
                    obj[v] += 1
                } else {
                    obj[v] = 1
                }
            })
            return obj
        }

        console.log(getCount(str))

2.封装一个函数,实现功能:往函数传参为该格式字符串:'get-elements-by-class-name',得到驼峰命名法的返回值为‘getElementsByClassName’(注意:直接在函数中返回‘getElementsByClassName’字符串为0分,需要对相同格式的字符串都能生效)

        let str = 'GET-elemenTs-bY-cLAss-nAMe'

        function getName(str) {
            // 1. 将所有的字母都转换为小写
    
            str = str.toLowerCase()
    
            // 2. 将-分隔的字符串转换为数组
            let arr = str.split('-')
    
            let newArr = arr.map(function (v, i) {
                // 如果当前索引不为0 则找到字符串索引为0项转换大写,拼接 剩余字符串
                if (i !== 0) {
                    return v[0].toUpperCase() + v.substr(1)
                }
                return v
            })
    
            // 再将数组转换为字符串
            let newStr = newArr.join('')
    
            return newStr
        }
        console.log(getName(str));

3.有一个url(字符串)如下: www.heima.com?key0=haha&key1=hello&key2=xixi ; 要求处理此url, 得到一个如下格式的对象: let obj = { key0:’haha’, key1:’hello’, key2:’xixi’ }

  • ?以后浏览器地址栏传递参数的标识,?前面是地址,后面是参数,我们要处理是?后面的那一串字符串
  • 第一步应该使用split创建?后面的那一串字符串 :key0=haha&key1=hello&key2=xixi
  • 第二步:使用&符号对字符串进行分隔,获取到一个数组:['key0=haha', 'key1=hello', 'key2=xixi']
  • 第三步:遍历数组,获取其中一个值:key0=haha,再次使用split进行分隔:split('=') : ['key0', 'haha']
  • 第四步,将数组的第0个元素做为对象的键,将第一个元素做为对象的值
  • 第五步:搞定

```<script>
        let str = 'http://www.heima.com?key0=haha&key1=hello&key2=xixi'

        function getParams(str) {

            // 1. 获取 ? 第一次出现的索引值
            // 20
            let index = str.indexOf('?')

            // 2. 获取目标字符串,截取? 后面的内容
            // key0=haha&key1=hello&key2=xixi
            let targetStr = str.substr(index + 1)

            // 3. 根据& 拆分字符串为数组
            // ['key0=haha', 'key1=hello', 'key2=xixi']
            let targetArr = targetStr.split('&')

            // 4. 遍历数组
            let newArr = targetArr.map(function (v) {
                return v.split('=')
            })

            // 4. 再次遍历二维数组,塞入对象
            let obj = {}
            newArr.forEach(function (v, i) {
                obj[v[0]] = v[1]
            })

            return obj
        }

        console.log(getParams(str));
    </script>