7. 数组去重案例 及 字符串常用方法

1.数组的三种去重

        简单去重法
function fnNoRepeatOfArray(arr){

    // 定义一个数组,用来放东西
    var list = [];

    // 遍历这个数组
    arr.forEach(function(value){
        // 判断下标
        if(list.indexOf(value) === -1){
            // 添加到数组
            list.push(value);
        }
    }) // 返回list
    return list;
}

//思想:找不到就放入,找到就不放   简单数组去重法
//优点:兼容性高,易于理解;
//缺点:无法区分NaN;需要特殊处理;
        相邻去重法
function fn(arr){
    //1.前一个
     for(var i = 0,len = arr.length;i < len;i ++){
         //2.后一个
         for(var j = i + 1;j < arr.length;j ++){
             //3.判断相不相等
             if(arr[i] === arr[j]){
                 //4.相等就删掉 splice(j,1) 相当于删除j
                 arr.splice(j,1);
                 //5.原数组发生改变会跳过,所以执行j--
                 j --;
             }
         }
     }
    return arr;
}
        下标去重法
function fn(arr){
    var list = [];
    arr.sort(function(a,b){return a - b;});
    //forEach遍历一个一个遍历,里面有value 和 index 就同时遍历了一个数的数值和下标。
    //抛开这个问题如果只有value,只能遍历数值.
    arr.forEach(function(value,index){
        if(value !== arr[index + 1]){
            list.push(value);
        }
    })
    return list;
}
//forEach返回值只能是undfeind;
//思想:排序   下标去重法  利用sort()排序方法,然后根据排序后的结果进行遍历及相邻元素比对。
//缺点:耗时长,排序后数据不可控;

2. 字符串常用方法

        如何声明

        1. 字面量方式: ' '   or    " "

        2. 构造函数方式: new String ( )

        属性

        length:长度

        方法【查、替、截、转 】

1. 查: indexOf( '字符串' ,start )

        ---- 查找子串在父串中第一次出现的下标位置,如果没有,则返回 -1

上菜:

var str = 'how do you  do';
           0123456789101112 
           // 空格也算哈

    // 第一次出现的是 下标4位置
console.log(str.indexOf('do')); //4
  
    // 父串没有,返回 -1
console.log(str.indexOf('de')); //-1

    // 从下标
console.log(str.indexOf('do',5)); //11

    //
console.log(str.indexOf('do',4)); //4

 查 :lastIndexOf(' 字符串 ' ,start)

        ----  查找子串在父串中从右向左查找第一次出现的下标位置,如果没有找到,返回 -1 从后往前找

上菜:

var str = 'how do you do';
console.log(str.indexOf('do')); //4
console.log(str.indexOf('de')); //-1
console.log(str.indexOf('do',5)); //11
console.log(str.indexOf('do',4)); //4

console.log(str.lastIndexOf('do')); //11
console.log(str.lastIndexOf('de')); //-1
console.log(str.lastIndexOf('do',5)); //4
console.log(str.lastIndexOf('do',4)); //4

 查:charAt (index): 根据下标查找字符

 查:charCodeAt(index) : 根据下标查找字符编码

2. 替:replace(旧串 ,新串):替换字符串

上菜:

//声明字符串
var str = 'how do you do';
console.log(str.replace('do','de')); //'how de you do'

// for(var i = 0;i < str.length;i ++){
//     str = str.replace('do','de');
// }

while(str.indexOf('do') !== -1){
    str = str.replace('do','de');
}
console.log(str);

3. 截 :

        substring(start , end) ---- 意思是从哪截取到哪,支持参数互换、不支持负数

        substr(start,length ):从哪截取多少个

        slice(start ,end):从哪截取到哪,不支持参数互换,支持负数

var str = 'how do you do';
console.log(str.substring(4)); //do you do
console.log(str.substr(4)); //do you do
console.log(str.slice(4));//do you do

console.log(str.substring(4,6)); //do
console.log(str.substr(4,6)); //do you
console.log(str.slice(4,6));//do

console.log(str.substring(6,4)); //do
console.log(str.slice(6,4));//''


console.log(str.substring(-6,-4)); //''
console.log(str.slice(-6,-4));//'yo'

4. 转

        toUpperCase(): 将小写转为大写字母

        toLowerCase(): 将大写转为小写字母

        split(‘切割符’ , length ): 将字符串切割为数组

上菜:

var str = 'How Are You';
console.log(str.toUpperCase()); //HOW ARE YOU
console.log(str.toLowerCase()); //how are you
var arr = str.split(' ',2); //['How', 'Are']
console.log(arr);

5. 拼

        concat():合并字串

上菜:

var str = 'hello';
console.log(str.concat(' world')); // hello world
去空白

1. trim() : 删除字符串两端空白

上菜:

var str = '     a     b    ';
console.log('(' + str.trim() + ')');  //(a     b)

2. trimStart():删除字符串左端空白

var str = '    a    b    ';
console.log('(' + str.trimStart() + ')');  //(a    b    )

3. trimEnd():删除字符串右端空白

var str = '    a    b    ';
console.log('(' + str.trimEnd() + ')');  //(    a    b    )
静态方法

String.fromCharCode(编码): 根据编码返回字符

字符串操作相关案例

  1. 去除字符串中所有的空格。

  2. 去除字符串中左边的空格与右边的空格 “ a b “ “a b” (不能使用trim方法)

  3. 统计出一个字符串中所有大写字母的数量与所有小写字母的数量

  4. 一次性输入多个成绩

  5. 影响职业因素

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值