【算法】基本功的扎实~

目录

  1. 写一个方法把下划线命名转成驼峰命名
  2. 处理数字123,与字符串’abc’ 转换为’1a2b3c’
  3. 把字符串大小写进行切换

一、 写一个方法把下划线命名转成驼峰命名

ab_cd_ef -> AbCdEf

思路: 字符串处理,一般都需要把字符串转成数组,遍历处理后,然后,再转为字符串

function strHeadUpper(str){
	let arr = str.split('_');// ['ab','cd','ef']
	let res=arr.map((item,index)=>{
		return item[0].toUpperCase()+item.slice(1); 
	});// ['Ab','Cd','Ef']
    let resStr = res.join('');
    return resStr;
};
let str = 'ab_cd_ef';
strHeadUpper(str);
// 'AbCdEf'
复制代码

二、处理数字123,与字符串’abc’ 转换为’1a2b3c’

1) 数字和字符串长度一样

var nums1 =123; var str1 = 'abc';

function composeNumStr(nums,str){
    let numsStr = nums+'';
    let res='';
    for(let i=0; i<numsStr.length;i++){
        res+=numsStr[i]+str[i]
    }
    return res;
};
composeNumStr(nums1,str1)
// '1a2b3c'
复制代码

2) 数字和字符串长度不一样

举例子,不兼容所有场景。 输入输出如下注释中。

var nums1 =123; var str1 = 'abcde';
// 遍历较短的一方,然后截取较长的一方剩余的串拼接即可
// 输出 '1a2b3cde'
function composeNumStr(nums,str){
    let numsStr = nums+'';
    let res='';
    for(let i=0; i<numsStr.length;i++){
        res+=numsStr[i]+str[i]
    }
    let res1 = res + str.slice(numsStr.length)
    return res1;
};
composeNumStr(nums1,str1)
//'1a2b3cde'
复制代码

三、把字符串大小写进行切换

1) 方法一 字符串遍历 拼接


function strChange(str){
    var strRes="";
    for(var i of str){
        console.log('-', i,i.toUpperCase());
        strRes += i.toUpperCase() === i ? i.toLowerCase() : 
                  i.toLowerCase() === i ? i.toUpperCase() : 
                  i

    }
    return strRes
}
let str11 = 'abCdEFG';

strChange(str11)
// "ABcDefg"
复制代码

2) 方法二 字符串转数组 并遍历

var str="abCdEFG";
function strChange(str){	
              return str
		.split("")
		.map((item,index)=>{
		    const upperItem = item.toUpperCase();
                    return item === upperItem ? item.toLowerCase() : upperItem
		 })
                .join("")
}
strChange(str)
// 'ABcDefg'
复制代码

总结

  • 字符串处理,一般都需要把字符串转成数组遍历处理后,然后,再转为字符串
  • 字符串处理: str-> split -> arr -> map -> new arr-> join -> str

疑问

  • js数字为什么没有length,对象{}也没有length。
  • js中除了字符串和数组有length,还有那些数据类型有length,比如 Map, weakSet ??
© 版权声明
THE END
喜欢就支持一下吧
点赞0 分享