FreeCodeCamp----Intermediate Algorithm Scripting解法
Finders Keepers
写一个 function,它浏览数组(第一个参数)并返回数组中第一个通过某种方法(第二个参数)验证的元素。
如果你被卡住了,记得开大招 Read-Search-Ask。尝试与他人结伴编程、编写你自己的代码。
- function find(arr, func) {
- /*方法1*/
- for(var i=0; i<arr.length; i++){
- if(func(arr[i])){
- return arr[i];
- }
- }
- /*end方法1*/
- /*方法2*/
- arr=arr.filter(function(item){
- func(item);
- });
- return arr[0];
- /*end方法2*/
- }
- find([1, 3, 5, 8, 9, 10], function(num) { return num % 2 === 0; });
Drop it
让我们来丢弃数组(arr)的元素,从左边开始,直到回调函数return true就停止。
第二个参数,func,是一个函数。用来测试数组的第一个元素,如果返回fasle,就从数组中抛出该元素(注意:此时数组已被改变),继续测试数组的第一个元素,如果返回fasle,继续抛出,直到返回true。
最后返回数组的剩余部分,如果没有剩余,就返回一个空数组。
- function drop(arr, func) {
- //把arr复制给myArr,myArr用来删除
- //注意:数组是引用类型,不能直接赋值
- var myArr=arr.filter(function(item,index,array){
- return true;
- });
- for(var i=0; i<arr.length; i++){
- if(func(arr[i]) === false){
- myArr.shift();
- }else{
- return myArr;
- }
- }
- return myArr; //如果数组中所有的数都不能通过验证,myArr已是空数组,返回空数组
- }
- drop([1, 2, 3, 4], function(n) {return n > 3;});
Steamroller
对嵌套的数组进行扁平化处理。你必须考虑到不同层级的嵌套。
- function steamroller(arr) {
- var resultArray=[];
- //编写一个递归函数
- //如果数组的当前元素不是数组,应添加到结果数组中
- //如果是数组,调用自身
- function flag(myArr){
- myArr.forEach(function(item,index,array){
- if( !(item instanceof Array) ){
- resultArray.push(item);
- }else{
- flag(item);
- }
- });
- }
- flag(arr);
- return resultArray;
- }
- steamroller([1, {}, [3, [[4]]]]); //应该返回 [1, {}, 3, 4]
Binary Agents
传入二进制字符串,翻译成英语句子并返回。
二进制字符串是以空格分隔的。
- function binaryAgent(str) {
- var myArr=str.split(" ");
- myArr=myArr.map(function(item,index,array){
- //parseInt(item,2)把item按照二进制解析为十进制
- return String.fromCharCode( parseInt(item,2) );
- });
- return myArr.join("");
- }
- binaryAgent("01000001 01110010 01100101 01101110 00100111 01110100 00100000 01100010 01101111 01101110 01100110 01101001 01110010 01100101 01110011 00100000 01100110 01110101 01101110 00100001 00111111"); //应该返回 "Aren't bonfires fun!?"
Everything Be True
所有的东西都是真的!
完善编辑器中的every函数,如果集合(collection)中的所有对象都存在对应的属性(pre),并且属性(pre)对应的值为真。函数返回ture。反之,返回false。
记住:你只能通过中括号来访问对象的变量属性(pre)。
- function every(collection, pre) {
- return collection.every(function(item,index,array){
- return item.hasOwnProperty(pre) && Boolean(item[pre]);
- });
- }
- every([{"user": "Tinky-Winky", "sex": "male"}, {"user": "Dipsy", "sex": "male"}, {"user": "Laa-Laa", "sex": "female"}, {"user": "Po", "sex": "female"}], "sex"); //应该返回 true。
Arguments Optional
创建一个计算两个参数之和的 function。如果只有一个参数,则返回一个 function,该 function 请求一个参数然后返回求和的结果。
例如,add(2, 3) 应该返回 5,而 add(2) 应该返回一个 function。
调用这个有一个参数的返回的 function,返回求和的结果:
var sumTwoAnd = add(2);
sumTwoAnd(3) 返回 5。
如果两个参数都不是有效的数字,则返回 undefined。
- function add() {
- if(typeof arguments[0] !== "number" || (arguments.length > 1 && typeof arguments[1] !== "number")){
- return undefined;
- }
- if(arguments.length == 1){
- var arg0 = arguments[0];
- return function(num){
- if(typeof num !== "number"){
- return undefined;
- }
- return arg0 + num;
- };
- }else{
- return arguments[0] + arguments[1];
- }
- }
- add(2,3);
FreeCodeCamp----Intermediate Algorithm Scripting解法的更多相关文章
- FreeCodeCamp---advanced Algorithm Scripting解法
Exact Change 设计一个收银程序 checkCashRegister() ,其把购买价格(price)作为第一个参数 , 付款金额 (cash)作为第二个参数, 和收银机中零钱 (cid) ...
- FreeCodeCamp 的 Basic Algorithm Scripting 题解(1)
这是本人的原创文章,转载请注明原文链接http://www.cnblogs.com/wusuowiaaa1blog/p/5932121.html. 1.Reverse a String 翻转字符串 先 ...
- [Intermediate Algorithm] - Binary Agents
题目 传入二进制字符串,翻译成英语句子并返回. 二进制字符串是以空格分隔的. 提示 String.charCodeAt() String.fromCharCode() 测试用例 binaryAgent ...
- [Intermediate Algorithm] - Arguments Optional
题目 创建一个计算两个参数之和的 function.如果只有一个参数,则返回一个 function,该 function 请求一个参数然后返回求和的结果. 例如,add(2, 3) 应该返回 5,而 ...
- [Intermediate Algorithm] - Everything Be True
题目 所有的东西都是真的! 完善编辑器中的every函数,如果集合(collection)中的所有对象都存在对应的属性(pre),并且属性(pre)对应的值为真.函数返回ture.反之,返回false ...
- [Intermediate Algorithm] - Steamroller
题目 对嵌套的数组进行扁平化处理.你必须考虑到不同层级的嵌套. 提示 Array.isArray() 测试用例 steamroller([[["a"]], [["b&qu ...
- [Intermediate Algorithm] - Drop it
题目 队友该卖就卖,千万别舍不得. 当你的队伍被敌人包围时,你选择拯救谁.抛弃谁非常重要,如果选择错误就会造成团灭. 如果是AD或AP,优先拯救. 因为AD和AP是队伍输出的核心. 其次应该拯救打野. ...
- [Intermediate Algorithm] - Finders Keepers
题目 写一个 function,它浏览数组(第一个参数)并返回数组中第一个通过某种方法(第二个参数)验证的元素. 提示 Array.filter() 测试用例 find([1, 3, 5, 8, 9, ...
- [Intermediate Algorithm] - Smallest Common Multiple
题目 找出能被两个给定参数和它们之间的连续数字整除的最小公倍数. 范围是两个数字构成的数组,两个数字不一定按数字顺序排序. 例如对 1 和 3 —— 找出能被 1 和 3 和它们之间所有数字整除的最小 ...
随机推荐
- 大数据学习路线:Hadoop集群同步技术分享
今天给大家带来的技术分享是——Hadoop集群同步. 一.同步方式 选择一个机器,作为时间服务器(这里选择hadoop01),所有的机器与这台集群时间进行定时的同步,比如,每隔十分钟,同步一次时间. ...
- linux系统电视盒子到底是什么
经常看到各种大神说今天刷了什么linux系统可以干嘛干嘛了,刷了乌班图可以干嘛干嘛了,但是身为一个小白,对这种名词都是一知半解.所以这边给大家科普一下,什么是linux系统?电视盒子刷了这个可以干啥? ...
- socket聊天的业务逻辑
一.主要思想: 1.如果用户A想要发消息给用户B,A需要将消息发送到一个服务器上,服务器接收到A发送的消息之后,再把消息发送给B,B接收到消息 2.当用户B断开连接时服务器不会 ...
- mysql 导入大文件
set global max_allowed_packet=1000000000; set global net_buffer_length=1000000;
- Selenium+Headless Firefox
背景 今天本地调试基于Selenium+PhantomJS的动态爬虫程序顺利结束后,着手部署到服务器上,刚买的热乎的京东云,噼里啪啦一顿安装环境,最后跑的时候报了这么个错误: UserWarning: ...
- Solr导入MySQL数据之dataimport-handler
Solr不借助手动JSolr编程情况下也可以将Mysql的数据导入到Solr中.实现方式是安装dataimport-Handler从关系数据库将数据导入到索引库. 1.向SolrCore中加入jar包 ...
- mysql服务器iowait高优化一例完整深入解析
我们有一服务器,上面运行着两个mysql实例,这几天iowait一直很高,在20-30%,下午特地专门排查和解决了下,相关过程整理如下. 该服务器有两个挂载盘,服务器在阿里云上,一个系统盘,一个数据盘 ...
- Linux模拟僵尸进程并kill
模拟系统有僵尸进程后怎么解决 僵尸进程 #include <stdio.h> #include <sys/types.h> int main() { //fork a chil ...
- phpstudy手动把mysql数据库从5.5.56升级到5.6.41
查看mysql版本: mysql> select version(); 1.关闭mysql,把原来的D:/phpStudy/PHPTutorial/mysql改名为MySQL_5.5.53作为备 ...
- linux 计划任务 crontab 简单用法
添加计划任务: 方法1: crontab -e 方法2: vim /etc/crontab #这种方式进去的文件有个sample可供参考 查看已经启动的任务:crontab -l 查看运行状态:ser ...