FreeCodeCamp中⽂社区刷题笔记(部分答案)
FreeCodeCamp中⽂社区刷题笔记(部分答案)
⼀、Profile Lookup(通讯录问题)
for循环问题
我们有⼀个对象数组,⾥⾯存储着通讯录。
函数 lookUp 有两个预定义参数:firstName值和prop属性 。
函数将会检查通讯录中是否存在⼀个与传⼊的 firstName 相同的联系⼈。如果存在,那么还需要检查对应的联系⼈中是否存在 prop属性。如果它们都存在,函数返回prop属性对应的值。
如果firstName 值不存在,返回 “No such contact”。
如果prop 属性不存在,返回 “No such property”。
代码如下:
//初始化变量
var contacts = [
{
"firstName": "Akira",
"lastName": "Laine",
"number": "0543236543",
"likes": ["Pizza", "Coding", "Brownie Points"]
},
{
"firstName": "Harry",
"lastName": "Potter",
"number": "0994372684",
"likes": ["Hogwarts", "Magic", "Hagrid"]
},
{
"firstName": "Sherlock",
"lastName": "Holmes",
"number": "0487345643",
"likes": ["Intriguing Cases", "Violin"]
},
{
"firstName": "Kristian",
"lastName": "Vos",
"number": "unknown",
"likes": ["Javascript", "Gaming", "Foxes"]
}
];
function lookUp(firstName, prop){
// 请把你的代码写在这条注释以下
/* 判断给出的参数firstname是否==[0,1,2,3]中的⼀个,若存在,还要检查给出的参数prop是否对应contacts[i]数组中的任⼀个属性,若存在,则返回prop属性对应的值
* 如果prop属性不存在,则返回“No such property”
*/
for(var i = 0; i < contacts.length; i++) {
if(contacts[i].firstName == firstName && contacts[i].hasOwnProperty(prop)){
return contacts[i][prop];
}else if(contacts[i].firstName == firstName && !contacts[i].hasOwnProperty(prop)){
return"No such property";
}else if(i==contacts.length-1){  //如果firstName不存在,则返回“No such contact”
return"No such contact";
}
}
// 请把你的代码写在这条注释以上
}
// 你可以修改这⼀⾏来测试你的代码
lookUp("Akira", "likes");
⼆、Generate Random Whole Numbers within a Range(随机数)
⽣成[min, max]间的随机数
我们之前⽣成的随机数是在0到某个数之间,现在我们要⽣成的随机数是在两个指定的数之间。
我们需要定义⼀个最⼩值和⼀个最⼤值。
下⾯是我们将要使⽤的⽅法,仔细看看并尝试理解这⾏代码到底在⼲嘛:
Math.floor(Math.random() * (max - min + 1)) + min
任务
创建⼀个叫randomRange的函数,参数为myMin和myMax,返回⼀个在myMin(包括myMin)和myMax(包括myMax)之间的随机数。 代码
// 举例
function ourFunction(ourMin, ourMax) {
return Math.floor(Math.random() * (ourMax - ourMin + 1)) + ourMin;
}
ourFunction(1, 9);
// 请把你的代码写在这条注释以下
function randomRange(myMin, myMax) {
return Math.floor(Math.random() * (myMax - myMin + 1)) + myMin; // 请修改这⼀⾏
}
// 你可以修改这⼀⾏来测试你的代码
var myRandom = randomRange(5, 15);
三、Sift through Text with Regular Expressions(正则表达式)
Regular expressions 正则表达式被⽤来根据某种匹配模式来寻strings中的某些单词。
举例:如果我们想要到字符串The dog chased the cat中单词 the,我们可以使⽤下⾯的正则表达式: /the/gi
我们可以把这个正则表达式分成⼏段:
/ 是这个正则表达式的头部
the 是我们想要匹配的模式
/ 是这个正则表达式的尾部
g 代表着 global(全局),意味着返回所有的匹配⽽不仅仅是第⼀个。
i代表着忽略⼤⼩写,意思是当我们寻匹配的字符串的时候忽略掉字母的⼤⼩写。
任务
⽤全局、忽略⼤⼩写的模式选取字符串 testString中所有的单词 and。
你可以尝试把 . 替换成 and。
// 初始化变量
var testString = "Ada Lovelace and Charles Babbage designed the first computer and the software that would have run on it.";
// 举例
var expressionToGetSoftware = /software/gi;
var softwareCount = testString.match(expressionToGetSoftware).length;
// 请只修改这条注释以下的代码
var expression = /and/gi;  // 请修改这⼀⾏
// 请只修改这条注释以上的代码
// ⽤ andCount 存储 testString 中匹配到 expression 的次数
var andCount = testString.match(expression).length;
四、Add your JavaScript Slot Machine Slots (⽼虎机问题)
现在我们的⽼虎机每次⽣存3个随机数,我们得去检查随机数是否全部相等的情况。
如果全部相等,我们应该提⽰⽤户他们赢了,并返回中奖号码,否则我们应该返回null。
null 是JavaScript中的⼀种数据类型,意味着空。
当这3个随机数相等的时候,判定⽤户赢。让我们创建⼀个if statement,⽤多个条件按顺序来检查它们是否相等。类似于:
if (slotOne === slotTwo && slotTwo === slotThree){
return slotOne;
} else {
}
当3个随机数都⼀样的时候,我们把 “It’s A Win” 追加到class logger的html中。
代码
<script>
function runSlots() {
var slotOne;
var slotTwo;
var slotThree;
var images = ["//i.imgur/9H17QFk.png", "//i.imgur/9RmpXTy.png", "//i.imgur/VJnmtt5.png"];
slotOne = Math.floor(Math.random() * (3 - 1 + 1)) + 1;
slotTwo = Math.floor(Math.random() * (3 - 1 + 1)) + 1;
slotThree = Math.floor(Math.random() * (3 - 1 + 1)) + 1;
// 请把你的代码写在这条注释以下
if(slotOne === slotTwo && slotTwo === slotThree) {
$(".logger").append(" It's A Win");
return slotOne;
}else {
return null;
}
// 请把你的代码写在这条注释以上
if (slotOne !== undefined && slotTwo !== undefined && slotThree !== undefined){
$(".logger").html(slotOne + " " + slotTwo + " " + slotThree);
}
$(".logger").append(" Not A Win");
return [slotOne, slotTwo, slotThree];
}
$(document).ready(function() {
$(".go").click(function() {
runSlots();
});
});
</script>
<div>
<div class = "container inset">
<div class = "header inset">
<img src="/images/freecodecamp_logo.svg"alt="learn to code JavaScript at Free Code Camp logo"class="img-responsive nav-logo"> <h2>FCC Slot Machine</h2>
</div>
<div class = "slots inset">
<div class = "slot inset">
</div>
<div class = "slot inset">
</div>
<div class = "slot inset">
borderbox</div>
</div>
<br/>
<div class = "outset">
<button class = "go inset">
Go
</button>
</div>
<br/>
<div class = "foot inset">
<span class = "logger"></span> </div>
</div>
</div>
<style>
.container {
background-color:#4a2b0f;
height: 400px;
width: 260px;
margin: 50px auto;
border-radius: 4px;
}
.header {
border: 2px solid #fff;
border-radius: 4px;
height: 55px;
margin: 14px auto;
background-color:#457f86
}
.header h2 {
height: 30px;
margin: auto;
}
.header h2 {
font-size: 14px;
margin: 0 0;
padding: 0;
color:#fff;
text-align: center;
}
.slots{
display: flex;
background-color:#457f86;
border-radius: 6px;
border: 2px solid #fff;
}
.slot{
flex: 1 0 auto;
background: white;
height: 75px;
margin: 8px;
border: 2px solid #215f1e;
border-radius: 4px;
}

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。