这一篇文章主要是写一些我在Codewars上写到的js题目。
2019.5.9
Disemvowel Trolls
题目
将一行字符串中的元音字符删去,并返回修改后的字符串。
题解
直接使用字符串自带的函数replace
。str.replace(x,y)
表示将与正则表达式x匹配的子串替换成y字符串
我们所需要的正则表达式为/[aeiou]/gi
/g表示执行全局匹配
/i表示对大小写不敏感
因为是删去,所以我们把匹配到的子串替换成空字符,即’’
代码
1 | function disemvowel(str) { |
List Filtering
题目
给定一个只含有数字类型和字符串类型元素的数组对象,过滤其中的字符串,并输出。
题解
数组对象有一个函数是filter()
,功能为创建一个新的数组,新数组中的元素是通过检查指定数组中符合条件的元素。
那么接下来就是判断一个元素是否为数字类型。通过typeof
我们可以得到一个元素的数据类型,如果等于’number’那么就是数字类型。
代码
1 | function check(e){ |
2019.5.12
Number of People in the Bus
题目
给定一个数组,表示n个车站。数组中的每个元素包含两个整型,分别表示每一个车站的上车人数和下车人数。求到最后一站时车上还剩下的人数。
题解
代码很好写,但是js代码要用js特色的代码。
数组中自带的reduce函数,功能为从左到右将元素通过括号里的函数累加。(a,b)=>(a+b)
是函数的另一种表现形式,等价于1
2
3function (a,b){
return a+b;
}
代码
1 | var number = function(busStops){ |
2019.5.14
Your order, please
题目
给定一个字符串,字符串中的每一个单词都包含着一个单独的数字,位置不定。
数字的范围为1-9,请按照数字从小到大对单词进行排序。
输出排序后的字符串。
题解
这题应该是我第一次用JS语言的风格单独写出来的题。之前的题目虽然也是自己解决的,但代码写出来就跟用C\C++写出来的一样。
以下为使用函数的解析:str.split(separtor,limit)
:将字符串转换成数组。separtor是指定分割成元素的字符或正则表达式。array.sort(function)
:对数组中的元素进行排序,默认排序顺序是按照字母升序。function是用来指定排序顺序的函数。str.match(regexp)
:在字符串中检索一个或者多个与括号内正则表达式匹配的值。array.join(separator)
:将数组中的所有元素转换成一个字符串,separator为元素之间的分隔符,此处用空格。
代码
1 | function order(words){ |
Where my anagrams at?
题目
定义两个字符串等价,当且仅当它们拥有的每种字符的个数都相等。
问在给定的字符串数组中有多少字符串与给定的字符串word等价。
题解
这题不难,所需函数上文都有。
代码
1 | function anagrams(word, words) { |
5.20
Calculating with Functions
题目
使用函数计算结果。
输入包括两个数字函数和一个符号函数,如one(plus(two()));
形式,即要求计算1+1的结果。
数字函数代表函数名对应的数字。
符号函数代表函数名对应的符号。
除法向下取整。
题解
因为这道题目我升到了5kyu
这道题其实并不难,用寻常的方法也是可以写的。
我再看了别人代码后修改了自己的代码。
其实主要的盲点就是函数可以直接返回一个函数。
代码不难,模拟一下即可。
代码
1 | function zero(Func) {return Func?Func(0):0;} |
5.21
Simple Pig Latin
题目
将给定字符串中的每个单词的第一个字母移到末尾,并在末尾加上’ay’。忽略标识符1
2pigIt('Pig latin is cool'); // igPay atinlay siay oolcay
pigIt('Hello world !'); // elloHay orldway !
题解
感觉这题还是主要考验
代码
1 | function pigIt(str){ |