JavaScript 数组及字符串常用技巧

115 阅读3分钟

JavaScript 数组及字符串常用技巧

字符串: 转换大小写 查找索引返回位置 将字符串分割为数组
    // 将字符串中的内容转换为小写
    let str1 = 'ABCDEfgh'
    console.log(str1.toLowerCase())

    // 将字符串中的内容转换为大写
    let str2 = 'abCDefgh'
    console.log(str2.toUpperCase());

   // 字符串或数组.indexOf('要检索的字符串') 如果返回-1 则代表没有找到 
    let str1 = 'ABCDEfgh'
    console.log(str1.indexOf('D'));

    //字符串.substr 字符串提取 从指定位置提取指定长度的字符串 原字符串不受影响
    let str1 = 'ABCDEfgh'
    console.log(str1.substr(1, 4));

    //字符串.split() 字符串装换成数组
    let str1 = 'ABCDEfgh'
    console.log(str1.split(''));
    console.log(str1.split(','));
    console.log(str1.split('-'));
数组: 排序 清空 翻转 转字符串 删除添加
            //数组及字符串清空
           let arr = [1, 2, 3, 4, 5, 6, 7]
            let str = '1,2,3,4,5,6,7,8'
            arr = []  //清空数组
            str = ''  //清空字符串
            arr.length = 0  //将数组的长度置为0也可清空数组
            //注意:!!!但是字符串的长度置为0 是没有任何效果的
            //字符串也可以通过索引的方式匹配到指定字符

           //数组.join() 将数组转换成字符串,默认是逗号
            let arr = ['李狗蛋', '张翠花', '赵铁柱']
            console.log(arr);
            // 用一个变量来接受转换后的结果
            // arr.join(转换字符串后的分隔符)
            let str = arr.join('-')
            let str = arr.join('')
            console.log(str);

            // 数组.sort() 数组排序  
            let arr = [4, 9, 0, 10, 240, -12, 98]
            // a - b从小到大排序
             arr.sort(function (a, b) {
                 return a - b
             })
            // b - a从大到小排序
            arr.sort(function (a, b) {
                return b - a
            })
            console.log(arr);

            //数组.splice 删除中指定元素(从哪里删,删几个,追加元素,追加元素)
            let arr = ['李狗蛋', '张翠花', '赵铁柱', '王小二']
            arr.splice(1, 2, '松哥', '仙女兔')
            console.log(arr);

           //数组.reverse() 反转数组,会改变原数组,并返回反转后的新数组
            let arr = [10, 2, 3, 4, 5, 6]
            arr.reverse()
            console.log(arr);


数组的数据交换和展开运算符
        //数组的数据交换[数据1,数据2]=[数据2,数据1]  交换语句的 前面结束语句一定要带分号,否则会报错
        let a = 1
        let b = 10;
        [a, b] = [b, a]
        console.log(a, b);

        // 展开运算符 ...
        // 只拷贝内容,并创建新的数组.修改时对原数据没有影响
        let arr1 = [1, 2, 3, 4, 5, 6]
        let arr2 = [...arr1]  
        arr2[0] = 1000
        console.log(arr1);
        // 运用场景 由于 Math.max() 里只能放 [数组]
        let arr = [1, 2, 3, 4, 5, 6]
        console.log(Math.max(...arr));
数组的forEach遍历 map遍历 filter遍历
        // v -> value 值  i -> 索引

        // 数组.forEach(function (v, i) {}) 只能做遍历操作
        let arr = [4, 9, 0, 10, 240, -12, 98]
        let newArr = []
        arr.forEach(function (v, i) {
            // v + 10 推入到新数组中 newArr.push()
            newArr.push(v + 10)
        })
        console.log(newArr);

        // 数组.map(function (v, i) {})对原数组当中的每一项增补 返回一个新数组
        let arr = [4, 9, 0, 10, 240, -12, 98]
        let newArr = arr.map(function (v, i) {
             return v + 10
        })
        console.log(newArr);


        // 数组.filter(function (v, i) {}) filter 过滤  对原数组重新过滤筛选,返回过滤筛选后的新数组
        let arr = [13, 0, '', 90, 78, '', '']
        // 去掉数组中的空字符串
        let newArr = arr.filter(function (v, i) {
            // return 符合推入新数组的条件->布尔值(过滤)
            return v !== '' && v !== 0
        })
        console.log(newArr);

	  //filter 过滤去重案例
        let arr = ['aa', 'bb', 'aa', 'cc', 'bb']
        let newArr = arr.filter(function (v, i) {
            // console.log(i);
            // i 数组当中每一项的索引值
            // console.log(arr.indexOf(v));

            // 第一轮 arr.indexOf('aa') -> 0   i -> 0
            // 第二轮 arr.indexOf('bb') -> 1   i -> 1
            // 第三轮 arr.indexOf('aa') -> 0   i -> 2
            // 第四轮 arr.indexOf('cc') -> 3   i -> 3
            // 第五轮 arr.indexOf('bb') -> 1   i -> 4
            return arr.indexOf(v) === i
        })
        console.log(newArr);