【算法】基本功的扎实~

目录

  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 ??

免责声明:务必仔细阅读

  • 本站为个人博客,博客所转载的一切破解、path、补丁、注册机和注册信息及软件等资源文章仅限用于学习和研究目的;不得将上述内容用于商业或者非法用途,否则,一切后果请用户自负。本站信息来自网络,版权争议与本站无关。

  • 本站为非盈利性站点,打赏作为用户喜欢本站捐赠打赏功能,本站不贩卖软件等资源,所有内容不作为商业行为。

  • 本博客的文章中涉及的任何解锁和解密分析脚本,仅用于测试和学习研究,禁止用于商业用途,不能保证其合法性,准确性,完整性和有效性,请根据情况自行判断.

  • 本博客的任何内容,未经许可禁止任何公众号、自媒体进行任何形式的转载、发布。

  • 博客对任何脚本资源教程问题概不负责,包括但不限于由任何脚本资源教程错误导致的任何损失或损害.

  • 间接使用相关资源或者参照文章的任何用户,包括但不限于建立VPS或在某些行为违反国家/地区法律或相关法规的情况下进行传播, 博客对于由此引起的任何隐私泄漏或其他后果概不负责.

  • 请勿将博客的任何内容用于商业或非法目的,否则后果自负.

  • 如果任何单位或个人认为该博客的任何内容可能涉嫌侵犯其权利,则应及时通知并提供身份证明,所有权证明至admin@proyy.com.我们将在收到认证文件后删除相关内容.

  • 任何以任何方式查看此博客的任何内容的人或直接或间接使用该博客的任何内容的使用者都应仔细阅读此声明。博客保留随时更改或补充此免责声明的权利。一旦使用并复制了博客的任何内容,则视为您已接受此免责声明.

您必须在下载后的24小时内从计算机或手机中完全删除以上内容.

您使用或者复制了本博客的任何内容,则视为已接受此声明,请仔细阅读


更多福利请关注一一网络微信公众号或者小程序

一一网络微信公众号
打个小广告,宝塔服务器面板,我用的也是,很方便,重点是免费的也能用,没钱太难了,穷鬼一个,一键全能部署及管理,送你3188元礼包,点我领取https://www.bt.cn/?invite_code=MV9kY3ZwbXo=


一一网络 » 【算法】基本功的扎实~

发表评论

发表评论

一一网络-提供最优质的文章集合

立即查看 了解详情