亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定

單行代碼算法解答(一)

標簽:
算法

webp

在实际工作当中,我们常常需要对数据进行处理,比如简单的数组元素相加,字符串的倒序排列等等。如果使用C语言来解答此类问题,我们需要用到一些底层的算法逻辑,使用基础的for循环和if判断等来解决。但是,在JS这门语言中,它本身就给我们提供了很多处理字符串和数组等数据结构的函数方法,这给我们解决此类问题带来了很多便利,下面我就以几个简单的例子来为大家展示如何使用单行代码解答算法

1. 获取最大值和最小值

编写函数highAndLow(), 获取数字组成的字符串中的最大值和最小值,用空格隔开并返回,要求实现以下结果:

highAndLow("1 2 3 4 5"); // "5 1"highAndLow("1 2 -3 4 5"); // "5 -3"highAndLow("1 9 3 4 -5"); // "9 -5"

一行代码解答:

let highAndLow = (numbers) => `${Math.max(...numbers.split(' '))} ${Math.min(...numbers.split(' '))}`;

算法解析:

numbers.split(' ') —— 用于将字符串拆分为数组
...numbers.split(' ') —— 【ES6语法】扩展运算符(...),用于将数组展开,展开的每一项作为参数传入Math.max()中
Math.max()Math.min() —— 分别用于求解数组项的最大值和最小值
${} —— 【ES6语法】模板字符串,用于在字符串(用反引号`引用)中写入变量

2. 单词首字母大写

编写函数toJadenCase(), 将英语句子中每个单词首字母改为大写,要求实现以下结果:

var str = "how can mirrors be real if our eyes aren't real";  
console.log(str.toJadenCase());   // "How Can Mirrors Be Real If Our Eyes Aren't Real"

一行代码解答:

String.prototype.toJadenCase = function(){ return this.replace(/(^|\s)[a-z]/g, x => x.toUpperCase()) };

算法解析:

/(^|\s)[a-z]/g —— 正则表达式,其中 ^ 表示字符串起始位置,\s 表示空格,[a-z] 表示单个小写字母,g 表示全局匹配
toUpperCase() —— 用于将字符串转换为大写
replace() —— 用于字符串的替换,更多用法可参见 简述test()、match()、replace()和search()的用法

3. 驼峰式命名转换

编写函数toCamelCase(),  实现驼峰式命名转换,要求实现以下结果:

toCamelCase("")   // ""toCamelCase("the-stealth-warrior")   // "theStealthWarrior"toCamelCase("The_Stealth_Warrior")   // "TheStealthWarrior"

一行代码解答:

let toCamelCase = str => str.replace(/(\-|_)([a-z]|[A-Z])/g, w => w.toUpperCase().slice(1));

算法解析:

/(-|_)([a-z]|[A-Z])/g —— 正则表达式,其中 \- 表示字符 -(加反斜杠是用来转义,因为短横杠 - 为正则元字符),[a-z] 表示单个小写字母,[A-Z] 表示单个大写写字母,g 表示全局匹配
slice() —— 用于字符串的裁剪,具体用法详见 JavaScript字符串“三剑客”

4. 句子中最短的单词长度

编写函数findShort(), 获取英文句子中最短单词的长度,要求实现以下结果:

findShort("bitcoin take over the world maybe who knows perhaps")   // 3findShort("turns out random test cases are easier than writing out basic ones")  // 3

一行代码解答:

let findShort = s => Math.min(...s.split(" ").map(s => s.length));

算法解析:

map() —— 用于遍历处理数组元素,这里是将数组元素全部转换为数组元素字符串长度

5. 求平均数

编写函数getAverage(), 求解数组中所有项的平均数,最终将该平均数向下取整作为函数返回值,要求实现以下结果:

getAverage([2,2,2,2])  // 2getAverage([1,2,3,4,5,])  // 3getAverage([1,1,1,1,1,1,1,2])   // 1

一行代码解答:

let getAverage = marks => Math.floor(marks.reduce((prev,cur) => prev + cur) / marks.l



作者:前端王睿
链接:https://www.jianshu.com/p/bbf7fadb07e7


點擊查看更多內容
TA 點贊

若覺得本文不錯,就分享一下吧!

評論

作者其他優質文章

正在加載中
  • 推薦
  • 評論
  • 收藏
  • 共同學習,寫下你的評論
感謝您的支持,我會繼續努力的~
掃碼打賞,你說多少就多少
贊賞金額會直接到老師賬戶
支付方式
打開微信掃一掃,即可進行掃碼打賞哦
今天注冊有機會得

100積分直接送

付費專欄免費學

大額優惠券免費領

立即參與 放棄機會
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號

舉報

0/150
提交
取消