FreeCodeCamp_js算法与数据结构_基础算法

1、将摄氏度转换为华氏度

//将摄氏度转换为华氏度的计算方式为:摄氏度乘以 9/5 然后加上 32。
function convertToF(celsius) {
  let fahrenheit = celsius*(9/5) + 32;
  return fahrenheit;
}
convertToF(30);

2、反转字符串reverse()

1、在翻转字符串之前可以通过str.split()方法将字符串分割成数组;
2、利用reverse()方法翻转数组
3、利用join()方法将数组的所有元素放入一个字符串

function reverseString(str) {
  console.log(str.split('').reverse().join(''))
  return str.split('').reverse().join('');
}
reverseString("hello");

3、计算整数的阶乘

1、使用递归实现阶乘

//要求factorialize(0)时返回1
function factorialize(num) {
  if(num <= 0){
    return 1
  }else{
    return num*factorialize(num-1)
  }
}
factorialize(5);

2、使用for循环实现阶乘

function factorialize(num) {
  let result = 1
   if(num <= 1){
        return 1
    }
  for(let i=1;i<=num;i++){
     result = result*i
     console.log(result)
  }
  return result
}
factorialize(5);

还可以使用while和do-while循环实现阶乘

//while循环
function factorialize(num) {
  let result = 1
  while(num >= 1){
    result *= num
    num --
  }
  console.log(result)
  return result
}
factorialize(5);

//do-while循环
function factorialize(num) {
  let result = 1
  if(num <= 0){
    return 1
  }
  do{
    result *= num
    num--
  }while(num >= 1)
  return result
}
factorialize(5);

4、找出字符串中的最长单词

1、利用数组的sort方法

function findLongestWordLength(str) {
  let strArray = str.split(' ')		//将字符串利用split()方法分割成数组
  strArray.sort( (a,b) => {
    return b.length - a.length
  })
  return strArray[0].length
}
findLongestWordLength("The quick brown fox jumped over the lazy dog");

2、使用for循环和三元运算符

function findLongestWordLength(str) {
  let strArray = str.split(' ')
  let length = 0
  for(let i=0;i<strArray.length;i++){
    length = strArray[i].length > length ? strArray[i].length : length
  }
  return length
}
findLongestWordLength("The quick brown fox jumped over the lazy dog");

5、找出多个数组中的最大数字


function largestOfFour(arr) {
  let newArray = []
  for(let i=0;i<arr.length;i++){
    arr[i].sort( (a,b) => {
      return b - a
    })
    newArray.push(arr[i][0])
  }
  console.log(newArray)
  return newArray;
}
largestOfFour([[4, 5, 1, 3], [13, 27, 18, 26], [32, 35, 37, 39], [1000, 1001, 857, 1]]);

6、确认结尾

用到字符串的substr()方法,从目标字符串中抽取指数目的字符

function confirmEnding(str, target) {
  let start = str.length - target.length
  let count = str.substr(start,target.length)
  if(count === target){
    return true
  }else{
      return false;
  }
}
confirmEnding("Bastian", "n");

7、重复输出字符串

使用repeat()或者使用递归函数

function repeatStringNumTimes(str, num) {
  // console.log(str.repeat(num))
  if(num <= 0){
    return ""
  }else{
    return str+repeatStringNumTimes(str,num-1)
  }
}
repeatStringNumTimes("abc", 3);

8、截断字符串

function truncateString(str, num) {
  if(str.length>num){
    return str.slice(0,num)+"...";
  }
  return str
}
truncateString("A-tisket a-tasket A green and yellow basket", 8);

9、按参数过滤数组

function findElement(arr, func) {
  for(let i=0;i<arr.length;i++){
      if(func(arr[i])){
        return arr[i];
      }
  }
  return undefined
}
findElement([1, 2, 3, 4], num => num % 2 === 0);

10、基本类型布尔值的检查

function booWho(bool) {
  return (typeof bool == "boolean") ? true : false;
}
booWho(false);

11、把字符中每个单词的首字母换成大写

function titleCase(str) {
  let strArr = str.split(' ')
  let result = []
  for(let i=0;i<strArr.length;i++){
    result.push(strArr[i].substring(0,1).toUpperCase() + strArr[i].substring(1).toLowerCase())
  }
  return result.join(' ')
}
titleCase("I'm a little tea pot");

12、Slice 与 Splice复制数组并插入另一个数组的指定位置

function frankenSplice(arr1, arr2, n) {
  let newArr = arr2.slice()
  newArr.splice(n,0,...arr1)
  return newArr
}
frankenSplice([1, 2, 3], [4, 5, 6], 1);

13、过滤数组中的假值

1、arr.filter()

function bouncer(arr) {
  return arr.filter(Boolean);
}
bouncer([7, "ate", "", false, 9]);

2、arr.forEach()

function bouncer(arr) {
  let newArr = []
  arr.forEach(item => {
    if(item){
       newArr.push(item)
    }
  })
  return newArr
}
bouncer([7, "ate", "", false, 9]);

3、for…of

function bouncer(arr) {
  let newArr = []
  for(let item of arr){
    if(item){
      newArr.push(item)
    }
  }
  return newArr
}
bouncer([7, "ate", "", false, 9]);

14、找出元素在数组中的索引

function getIndexToIns(arr, num) {
  arr.push(num)
  arr.sort((a,b) => {
    return a - b
  })
  return arr.indexOf(num);
}
getIndexToIns([40, 60], 50);

15、比较字符串

function mutation(arr) {
  let a = arr[0].toLowerCase()
  let b = arr[1].toLowerCase()
  for(let i=0;i<b.length;i++){
    if(a.indexOf(b[i]) === -1){
      return false
    }
  }
  return true
}
mutation(["hello", "hey"]);

16、分割数组

function chunkArrayInGroups(arr, size) {
  let newArr = []
  for(let i=0;i<arr.length;i+=size){
    newArr.push(arr.slice(i,i+size))
  }
  console.log(newArr)
  return newArr;
}
chunkArrayInGroups(["a", "b", "c", "d"], 2);
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值