编程题目:格式化名字字符串
2016-07-14 15:39
417 查看
题目: Format a string of names like ‘Bart, Lisa & Maggie’
来源:https://www.codewars.com/kata/format-a-string-of-names-like-bart-lisa-and-maggie/javascript
描述:
+ Given:an array containing hashes of names
+ Return:a string formatted as a list of names separated by commas except for the last two names, which should be separated by an ampersand.
分析:
很简单的字符串拼接的题目,主要考察对数组的操作,给你一个包含很多名字的对象数组,讲这些名字按一定的规律拼接成字符串,方法有很多中,但是要编写的更为clever。
1. 方法一:
首先考虑使用最简单的
方法太笨,不太好。
2. 方法二:
使用
还是不够clever,这个方法有个问题,在第二行return语句上加上了一个对数组长度的判断,因为如果不加这个判断,输入的数组为空的话,就会因为使用了
3. 方法三
同样使用
利用三目运算符的嵌套实现多重判断!!,这个要学会使用。
来源:https://www.codewars.com/kata/format-a-string-of-names-like-bart-lisa-and-maggie/javascript
描述:
+ Given:an array containing hashes of names
+ Return:a string formatted as a list of names separated by commas except for the last two names, which should be separated by an ampersand.
分析:
很简单的字符串拼接的题目,主要考察对数组的操作,给你一个包含很多名字的对象数组,讲这些名字按一定的规律拼接成字符串,方法有很多中,但是要编写的更为clever。
1. 方法一:
首先考虑使用最简单的
array.map()方法来进行数组的遍历,使用
if-else来进行条件判断,将数组的每一项进行相应的格式化组成新的数组,最后将新的数组使用
join()方法拼接起来。
function list(names) { var len = names.length var arr = names.map(function(val, index) { if(index < len-2) { return val.name + ', ' } else if (index === len-2) { return val.name + ' & ' } else { return val.name } }) return arr.join(''); }
方法太笨,不太好。
2. 方法二:
使用
array.reduce()方法来进行数组的遍历,使用
? :三目操作符来进行条件判断,利用
array.slice()方法截断数组,将数组的第零项作为参数传给
reduce()方法作为第一个prev。
function list(names){ return names.length ? names.slice(1).reduce((pre, current, index) => { return pre + (index<names.length-2 ? ', ' + current.name : ' & ' + current.name) }, names[0].name) : '' }
还是不够clever,这个方法有个问题,在第二行return语句上加上了一个对数组长度的判断,因为如果不加这个判断,输入的数组为空的话,就会因为使用了
names[0].name语句报错。
3. 方法三
同样使用
reduce()方法来进行遍历与组合,但是不再使用
slice()方法截断数组,直接采用三目运算符的嵌套来进行条件判断,clever!
function list2(names) { return names.reduce((prev, curr, i) => { return prev + curr + (i<names.length-2) ? ', ' : i===names.length-2 ? ' & ' : '' }, '') }
利用三目运算符的嵌套实现多重判断!!,这个要学会使用。
相关文章推荐
- [从codewars学习到的JS系列1]数组方法reduce(),map(),正则$1等的使用
- Codewars-Javascript训练手册:字符串(上)
- Codewars简单使用和 其中一道题,用JavaScript实现一个函数,求一个正数的次大数字,拿自己的解法和大神相比,简直对不起JavaScript给我提供的 那么多便利
- Codewars 打怪日记 5星级kyu 数独游戏 我是否完成了数组 Did I Finish my Sudoku? 看小菜和大神循环的巧妙运用
- codewars打怪日记 Greed is Good JavaScript中数组用法和 哈希表的使用
- codewars打怪升级日记 用JavaScript实现大数相加 /像数字一样加数字型字符串
- JavaScript进阶学习 CodeWars 日记 求两个字符串的混合
- 实现JavaScript 的Math.round,Math.ceil,Math.floor函数功能 CodeWars 打怪日记
- CodeWars 计算一个城市的降雨量
- CodeWars 排队买票的人手持25,50,100,判断当前的零钱是否够找零
- CodeWars 关于字符串包含问题
- CodeWars 编解码问题
- Consecutive k-Primes
- Second Variation on Caesar Cipher
- Which are in?
- 【codewars】Roman Numerals Encoder
- 【codewars】Strip Comments
- 【codewars】Pete, the baker
- 编程题目:The Coupon Code
- codewars2