JS扩展

79 阅读3分钟

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

*常用字符串方法*

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

*常用数组方法*

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

  •  arr.sort(function (a, b) { return a - b }) 数组升序排列
     arr.sort(function (a, b) { return b - a }) 数组降序排列
    
  • arr.length = 0 清空数组

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

  • arr.splice(index,howmany,arr1,arr2...) ,删除元素并添加元素,从index位置开始删除howmany个元素,并将arr1、arr2...数据从index位置依次插入。howmany为0时,则不删除元素

遍历方法

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

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

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

案例

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

// 目标:给用户返回这种格式的数据:{a:4,b:3,c:6}
function getCount(str) {
    // 遍历字符串,判断对象中有没有当前遍历到的字符做为键,如果没有,数量应该默认为1,否则将数据+1
    let obj = {}

    // 遍历字符串
    for (let i = 0; i < str.length; i++) {
        let s = str[i]
        // 判断当前字符在对象中是否已经存在
        if (obj[s]) {
            // 数量 + 1
            obj[s] = obj[s] + 1
        } else {
            // 添加这个字符做为键,数量 = 1
            // 如果键不存在,就是添加
            obj[s] = 1
        }
    }

    return obj
}

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

// 封装一个函数,实现功能:往函数传参为该格式字符串:'get-elements-by-class-name',得到驼峰命名法的返回值为‘getElementsByClassName’
let str = 'GET-elemenTs-bY-cLAss-nAMe'
// 2.使用split方法通过-分隔字符串 ,返回一个数组,里面有元素就是一个一个的单词:
let arr = str.split('-') // ['get', 'elements', 'by', 'class', 'name']
// 先处理第0个字符串,将字符串转换为小写
arr[0] = arr[0].toLowerCase()
// 3.遍历数组,获取到里面一个一个的单词
for (let i = 1; i < arr.length; i++) {
    // 4.处理单个单词(第一个转小写),其它的第一个转为大写,其它的转为小写,拼接为一个新的字符串,覆盖原字符串
    // console.log(arr[i]) // elements
    // console.log(arr[i][0].toUpperCase() + arr[i].substr(1).toLowerCase())
    arr[i] = arr[i][0].toUpperCase() + arr[i].substr(1).toLowerCase()
}
// 将数组使用指定的连接符再拼接到一起
let vName = arr.join('')
console.log(vName)

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个元素做为对象的键,将第一个元素做为对象的值
  • 第五步:搞定