常见字符串和数组方法

365 阅读4分钟

1> 常用字符串方法

  • toLowerCase(): 把字符串转为小写,返回新的字符串
  • toUpperCase(): 把字符串转为大写,返回新的字符串
        //转换大小写
         let str = 'aBcDeFgHIjK'
         let newStr1 = str.toLowerCase()
         let newStr2 = str.toUpperCase()
         console.log(newStr1);          //abcdefjhijk
         console.log(newStr2);          //ABCDEFJHIJK

复制代码
  • indexOf(): 返回某个指定的子字符串在字符串中第一次出现的索引位置,如果没有查找到则返回-1(也可以用于数组的去重)
         let str = 'abcdsonggesajdkljsakldjasldsa'
         let index = str.indexOf('b')
         console.log(index);                 //1
复制代码
  • substr(index,howmany): 返回从指定下标开始指定长度的的子字符串
        let str = 'abcdsonggesajdkljsakldjasldsa'
        let index = str.substr(0,2)
        console.log(index);                 //ab

复制代码
  • split(): 把字符串分割成字符串数组
        //字符串转数组
        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);            //"ligoudan","zhangcuihua","zhaotiezhu"
        console.log(arr2);
        console.log(arr3);
复制代码

2> 常用数组方法

  • arr.reverse() 反转数组,会改变原数组,并返回反转后的新数组
       // 反转数组arr.reverse()
        let arr=[1,2,3,4,5]
        arr.reverse()
        console.log(arr);             //(5)[5,4,3,2,1]
复制代码
  • arr.sort(function (a, b) { return a - b }) 数组升序排列
        //  a-b从小到大排序
        let arr = [1, 8, 3, 6, 9, 7, 4]
        arr.sort(function (a, b) {
            return a - b
        })
        console.log(arr);                    //(7)[1,3,4,6,7,8,9]
复制代码
  • arr.sort(function (a, b) { return b - a }) 数组降序排列
         //  b-a从大到小排序
        arr.sort(function (a, b) {
            return b - a
        })
        console.log(arr);                     //(7)[9,8,7,6,4,3,1]
复制代码
  • arr.length = 0 清空数组
        // 清空数组arr.length=0
        let arr = [1, 2, 3, 4, 5]
        let str = '12345'
        str.length = 0
        arr.length = 0           //清空数组   []
        console.log(arr);
        console.log(str);    //根据索引获取指定字符 12345
        console.log(str[0]);           //1
复制代码
  • arr.join(),将数组的每一项用指定字符连接形成一个字符串。默认连接字符为 “,” 逗号
        // 数组转字符串arr.join()
        let arr = ['张翠花', '李狗蛋', '赵铁柱']
        let str = arr.join(' ')
        console.log(str);                      //张翠花 李狗蛋 赵铁柱
复制代码
  • arr.splice(index,howmany,arr1,arr2...) ,删除元素并添加元素,从index位置开始删除howmany个元素,并将arr1、arr2...数据从index位置依次插入。howmany为0时,则不删除元素
        // 字符串转数组arr.split()
        let str = '123456789'
        let arr=str.split(',')
        console.log(arr);               //['123456789']
        
        //在删除位置追加新元素arr.splice()
        let arr=['李狗蛋','赵铁柱','张翠花','张三']
        arr.splice(1,2,'李四','王麻子')
        console.log(arr);              //(4)['李狗蛋','李四','王麻子','张三']
复制代码

3> 交换数据,展开运算符

  • 交换数据
         //交换数据
         let a = 1
         let b = 9;
         [a, b] = [b, a]
         console.log(a, b);    //a=9 b=1
复制代码
  • 展开运算符
         //展开运算符 ...
         let arr1 = [1, 2, 3, 4, 5]
         let arr2 = [...arr1]
         arr2[2] = 10
         console.log(arr2);        // [1,2,10,4,5]
复制代码
  • 数学方法展开运算符
        //数学方法展开运算符
        let arr = [1, 2, 3, 4, 5]
        let max = Math.max(...arr)    //第一种输出方法  5
        console.log(max);
        console.log(Math.max(...arr));  //第二种输出方法 5
复制代码

4> 遍历方法

  • Array.forEach(function),用于调用数组的每个元素,并将元素传递给回调函数。原数组不变,v代表里面的value值,i代表数组里的索引值
        let arr = [1, 2, 3, 4, 5]
        let newarr = []
        arr.forEach(function (v, i){
            newarr.push(v + 10)
        })
        console.log(newarr);              //[11,12,13,14,15]
复制代码
  • Array.map(function),原数组的每一项执行函数后,返回一个新的数组。原数组不变

① 数字补0 arr.map(function)

       //数字补0 arr.map(function)
       let arr = [12, 4, 6, 9, 7, 13, 45, 15]
       let newarr = arr.map(function (v, i) {
           if (v < 10) {
              return  '0'+ +v 
         }
              return v
        })
        console.log(newarr);
复制代码

② 年龄补1

        //年龄补1
        let arr = [{
            name: '李狗蛋',
            age: 16,
            sex: '男'
        }, {
            name: '张翠花',
            age: 20,
            sex: '女'
        }, {
            name: '赵铁柱',
            age: 25,
            sex: '男'
        }, {
            name: '王小二',
            age: 19,
            sex: '男'
        }]
        let newage = arr.map(function (v,i){
            v.age+=1
            return v
        })
        console.log(newage);

复制代码
  • Array.filter(function),过滤数组中,符合条件的元素并返回一个新的数组

① 利用filter去掉空字符串和0

        //利用filter去掉空字符串和0
        let arr = [13, 0, '', 90, 78, '', '']
        let newarr = arr.filter(function (v, i) {
            return v !== '' && v !== 0
        })
        console.log(newarr);
复制代码

② 利用filter去重

        //利用filter去重
        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是数组当中的索引 v是每一项
            //第一轮 arr.indexOf(1)--> i = 0  返回0  
            //第二轮 arr.indexOf(1)--> i = 0  返回0
            //第三轮 arr.indexOf(2)--> i = 2  返回2
            //第四轮 arr.indexOf(3)--> i = 3  返回3
            //第五轮 arr.indexOf(4)--> i = 4  返回4
            //第六轮 arr.indexOf(4)--> i = 5  返回4
            return arr.indexOf(v) === i
        })
        console.log(newarr);
复制代码

5> 计算每个字母出现的次数

        let str = 'aabbccddeeffffaaaacccbb'
        let arr = str.split('')
        console.log(arr);
        let obj = {}
        arr.forEach(function (v, j) {
            if (obj[v]) {
                obj[v] += 1
            } else {
                obj[v] = 1
            }
        });
        console.log(obj);
复制代码

6> 将字符串首字母大写其余小写

        let str = 'GEt-elEMENT-bY-clASS-iD'
        //转换成小写
        let newstr = str.toLowerCase()
        console.log(newstr);             //get-element-by-class-id
        //转换成数组以-分隔
        let arr = newstr.split('-')
        console.log(arr);                //0: "get" 1: "element" 2: "by" 3: "class" 4: "id" length: 5
        //map遍历
        let newarr = arr.map(function (v, j) {
            //索引值不为0执行if语句否则返回v也就是get不大写或者if(v>0)
            if (v !== 0) {
                //v值的0索引也就是第一个字母转成大写并且返回后面的字符串
                return v[0].toUpperCase() + v.substr(1)
            }
            return v
        })
        console.log(newarr);            //0: "Get" 1: "Element" 2: "By" 3: "Class" 4: "Id" length: 5
        let res = newarr.join('')
        console.log(res);               //GetElementByClassId