0
点赞
收藏
分享

微信扫一扫

freeCodeCamp——JavaScript基础练习

火热如冰 2022-04-18 阅读 100
javascript

文章目录

一、使用递归创建一个倒计时

题目描述:

测试要求:

解决方案:

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点游戏

算法描述:

题目描述:

规则描述:

计数卡牌
+12, 3, 4, 5, 6
07,8,9
-110, ‘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";
            }
        }
    }

注意:

  1. .hasOwnProperty()括号里直接为属性名 不要加引号

  2. 你的代码运行后是否除了输入name=Akira之外的name属性值一直显示 “No such contact”?

  1. 你的代码运行后是否一直显示undefined?


看到这啦,如果觉得还行就点个赞啦!!!如有其他不同想法可评论

举报

相关推荐

0 条评论