驼峰命名、数组去重、算出字符中每个字符出现的次数
驼峰命名
需求
将字符串"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!!