文章目录
一、使用递归创建一个倒计时
题目描述:
测试要求:
解决方案:
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?
 
看到这啦,如果觉得还行就点个赞啦!!!如有其他不同想法可评论










