驼峰命名、数组去重、算出字符中每个字符出现的次数

驼峰命名、数组去重、算出字符中每个字符出现的次数

驼峰命名

需求

​ 将字符串"get-element-by-id"转化为getElementById

1.0未优化

​ 思路:

​ 1、将字符串按"-"分为数组"get","element","by","id"

​ 2、让需要用于输出的变量的值(此处为new_name)为该数组的第一个值 (此处为name[0]])

​ 3、将每个单词分为数组储存字母 eg. by 分为

​ evert_letter[0]='b' ,evert_letter[1]='y'

​ 3、将第一个字符改为大写

​ 4、将字符合并为单词

​ 5、将单词合并为所需求字符串

  // 将如下字符串'get-element-by-id'修改为驼峰表示法'getElementById'
    let name = 'get-element-by-id'
    name = name.split("-");
    // 每个字母
    let every_letter;
    // 首字母
    let first_letter;
    let new_name;
    
    new_name = name[0];
    for(let i =1;i < name.length;i++){
        every_letter = name[i].split("");
        first_letter = every_letter[0].toString().toUpperCase();
        every_letter[0] = first_letter;
        name[i] = every_letter.join("");
        // name[i] =
        new_name += name[i] ;
        
    }

    console.log(new_name);
   

​ 优点:思路叫直接,好理解

​ 缺点:太过于繁杂

2.0版本

​ 思路

​ 1、将arr按照'-'分为数组

​ 2、让需要用于输出的变量(此处为outWords)的值为该数组的第一个值 (此处为word[0])

​ 3、用个变量firstLetter储存每个单词中已转化为大写的首字母

​ 4、用firstLetter 连接除了第一个字母外的单词,此处用subString(1)来获取该单词

​ 5、将值赋予用于输出的变量

let arr = 'get-element-by-id';
//拆分成一个个单词
let word = arr.split('-');
//要输出的一个单词
let outWords = word[0];
let firstLetter;
for(let i = 1;i <word.length;i++){
    // 首字母大写
    firstLetter =  word[i].toString().charAt(0).toUpperCase();
    // 取出word中除了第一个字符的所有剩下的字母并累加赋值给outWords
    outWords += firstLetter+word[i].substring(1)
   
}
console.log(outWords);

优点吧!!代码挺简洁的哈^ 0 ^

数组去重

需求

​ 给定一个数组arr,将数组中重复的字符去掉

​ eg.arr = [1,57,57,415,1,1,4,5,54,5,45] 输出 [1, 57, 415, 4, 5, 54, 45]

实现思路

​ 1、设立一个空数组brr

​ 2、遍历给定的数组arr,拿出每个元素和自己设立的数组brr进行比较

​ 3、若数组brr中没有这个值,则将该值添加到brr中

let arr = [1,57,57,415,1,1,4,5,54,5,45];
    let brr =[]
    //forEach中function的item为arr中的每个元素
    arr.forEach(function(item){
        //若brr.indexOf(item)等于-1说明brr中没有改item值
        if(brr.indexOf(item) == -1){
            brr.push(item);
        }
    })
    console.log(brr);

拓展 字符串去重

若需要将字符串去重只需要将字符串转化为数组即可

let string = 'ksdjfjsdfjs';
let arr = splig('');

在使用上面的方法即可。需要输出字符串的将输出的数组给个.toString方法即可

算出字符中每个字符出现的次数

需求

​ 算出字符中每个字符出现的次数

​ eg. 给出字符串"sssaabb" 输出 s 3 , a 2, b 2

思路

​ 设立一个对象,将字符串中的每个字符作为对象的每个属性,将出现的次数作为属性对应的值

let string = 'ssjdfjiejisessddd';
    //设立一个对象
    let obj = {};
    //将字符串转化为数组
    let arr = string.split('');
    // 遍历数组赋值对象
    arr.forEach(function(e){
        // 将字符转化为对象的一个属性并用数字作为属性的值
        obj[e];
        // 记录字符出现的次数
        obj[e] = obj[e] == null? 1: obj[e]+ 1;
    });
    // 将obj中出现的所有字母输出其次数
    for(let key in obj){
       console.log(key,obj[key])
    }

其中三元表达式写作

obj[e] = obj[e] == null? 1: obj[e]+ 1;

//等效于
if(obj[e] == null){
    obj[e] = 1;
}
else{
    obj[e] += 1;
}

想查看更多js案例可查看我的github项目

如果喜欢的话欢迎 strat!!

posted @ 2019-11-20 01:42  Monday1997  阅读(266)  评论(0编辑  收藏  举报