文章目录
一、使用递归创建一个倒计时
题目描述:
测试要求:
解决方案:
function countdown(n){
if(n<1) {
return [];
} else {
var arr=countdown(n-1);
arr.unshift(n);
return arr;
}
}
二、使用递归来创建一个数字序列
题目描述:
测试要求:
解决方案:
function rangeOfNumbers(startNum, endNum) {
if(startNum==endNum){
return [startNum]
}else {
var arr=rangeOfNumbers(startNum,endNum-1);
arr.push(endNum);
return arr
}
}
三、记录集合
题目描述:
规则描述:
测试要求:
测试用例 | 结果 |
---|---|
updateRecords(recordCollection, 5439, “artist”, “ABBA”) | artist 的值应该是字符串 ABBA |
updateRecords(recordCollection, 5439, “tracks”, “Take a Chance on Me”) | tracks 的最后一个元素应该为字符串 Take a Chance on Me |
updateRecords(recordCollection, 2548, “artist”, “”) | artist 不应被设置为任何值 |
updateRecords(recordCollection, 1245, “tracks”, “Addicted to Love”) | tracks 的最后一个元素应该为字符串 Addicted to Love |
updateRecords(recordCollection, 2468, “tracks”, “Free”) | tracks 的第一个元素应该为字符串 1999 |
updateRecords(recordCollection, 2548, “tracks”, “”) | tracks 不应被设置为任何值 |
updateRecords(recordCollection, 1245, “albumTitle”, “Riptide”) | albumTitle 的值应该是字符串 Riptide |
解决方案:
var recordCollection = {
2548: {
albumTitle: 'Slippery When Wet',
artist: 'Bon Jovi',
tracks: ['Let It Rock', 'You Give Love a Bad Name']
},
2468: {
albumTitle: '1999',
artist: 'Prince',
tracks: ['1999', 'Little Red Corvette']
},
1245: {
artist: 'Robert Palmer',
tracks: []
},
5439: {
albumTitle: 'ABBA Gold'
}
}
function updateRecords(records, id, prop, value) {
if(value=='') {
delete records[id][prop]
} else if (prop!="tracks"){
records[id][prop]=value
} else if (prop=='tracks') {
if(!records[id].hasOwnProperty('tracks')) {
records[id][prop] = []
}
records[id][prop].push(value)
}
return records
}
updateRecords(recordCollection, 5439, 'artist', 'ABBA')
注意:要先判断value是否为空值,否则每一步都要判断是否为空
四、21点游戏
算法描述:
题目描述:
规则描述:
计数 | 卡牌 |
---|---|
+1 | 2, 3, 4, 5, 6 |
0 | 7,8,9 |
-1 | 10, ‘J’, ‘Q’, ‘K’, ‘A’ |
测试要求:
解决方案:
let count = 0;
function cc(card) {
switch (card) {
case 2:
case 3:
case 4:
case 5:
case 6:
count++
break
case 10:
case "J":
case "Q":
case "K":
case "A":
count--
break
}
if (count <= 0) {
return count + " Hold"
}
return count + " Bet"
}
cc(2); cc(3); cc(7); cc('K'); cc('A');
注意:当card的值为7,8,9时,不增也不减,此时可忽略。Bet指继续加赌注,Hold指不追加赌注,根据计算后的值判断是否追加赌注。
五、高尔夫代码
题目描述:
规则描述:
挥杆次数 | 返回字符串 |
---|---|
1 | “Hole-in-one!” |
<=par -2 | “Eagle” |
par - 1 | “Birdie” |
par | “Par” |
par+1 | “Bogey” |
par+2 | “Double Bogey” |
>= par + 3 | “Go Home!” |
测试要求:
测试 | 结果 |
---|---|
golfScore(4, 1) | Hole-in-one! |
golfScore(4, 2) | Eagle |
golfScore(5, 2) | Eagle |
golfScore(4, 3) | Birdie |
golfScore(4, 4) | Par |
golfScore(1, 1) | Hole-in-one! |
golfScore(5, 5) | Par |
golfScore(4, 5) | Bogey |
golfScore(4, 6) | Double Bogey |
golfScore(4, 7) | Go Home! |
解决方案:
const names = ["Hole-in-one!", "Eagle", "Birdie", "Par", "Bogey", "Double Bogey", "Go Home!"];
function golfScore(par, strokes) {
if (strokes == 1)
return "Hole-in-one!";
else if (strokes <= par - 2)
return "Eagle";
else if (strokes == par - 1)
return "Birdie";
else if (strokes == par)
return "Par";
else if (strokes == par + 1)
return "Bogey";
else if (strokes == par + 2)
return "Double Bogey";
else if (strokes >= par + 3)
return "Go Home!";
}
golfScore(5, 4);
注意:par 和 strokes 必须是数字而且是正数。
六、资料查找
题目描述:
测试要求:
解决方案:
// 设置
const 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 lookUpProfile(name, prop) {
for (var i = 0; i < contacts.length; i++) {
if (name == contacts[i]["firstName"]) {
if (contacts[i].hasOwnProperty(prop)) {
return contacts[i][prop];
} else {
return "No such property";
}
}
}
return "No such contact";
}
lookUpProfile("Akira", "likes");
为什么不能用下面这段代码段?
function lookUpProfile(name, prop) {
for (var i = 0; i < contacts.length; i++) {
if (name == contacts[i]["firstName"]) {
if (contacts[i].hasOwnProperty(prop)) {
return contacts[i][prop];
} else {
return "No such property";
}
} else {
return "No such contact";
}
}
}
注意:
-
.hasOwnProperty()括号里直接为属性名 不要加引号
-
你的代码运行后是否除了输入name=Akira之外的name属性值一直显示 “No such contact”?
- 你的代码运行后是否一直显示undefined?
看到这啦,如果觉得还行就点个赞啦!!!如有其他不同想法可评论