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