当年练手FreeCodeCamp中的js基础算法编码题7~11 [源码]

七、Confirm the Ending 确认字符串是否以指定的串结尾

思路
1、主要是用String.prototype.substr()获取尾串是否与目标相等

代码如下:

function confirmEnding(str, target) {
  // "Never give up and good luck will find you."
  // -- Falcor
  if(target.length > str.length){
    return false;
  } else{
    if(str == target || str.substr(str.length- target.length) == target){
      return true;
    }else{
      return false;
    }
  }
}

confirmEnding("Bastian", "n");

八、Repeat a string repeat a string 重复一字符串

思路
比较简单,拼上去就行

代码如下:

function repeatStringNumTimes(str, num) {
  var tem = str;
  // repeat after me
  if(num<0){
    str = '';
  } else {
    for(var i=1;i<num;i++){
      str += tem;
    }
  }
  return str;
}

repeatStringNumTimes("abc", 3);

九、Truncate a string 截取字符串超出用…表示

思路
1、主要是用String.prototype.slice()把首串截出来与…合拼

代码如下:

function truncateString(str, num) {
  var len = str.length;
  // Clear out that junk in your trunk
  if(len > num){
    if(num>3){
      str = str.slice(0,num - 3) + '...';
    } else {
      str = str.slice(0,num) + '...';
    }
  }
  return str;
}

truncateString("A-tisket a-tasket A green and yellow basket", 11);

十、Chunky Monkey 等分数组变成多个子数组

思路
1、把数组等分并求余
2、组成新的数组

代码如下:

function chunkArrayInGroups(arr, size) {
  // Break it up.
  var len = arr.length,
      m = len%size,
      div = 1,
      rArr = [];
  if(len > size){
    div = Math.floor(len/size);
    for(var i=0;i<div;i++){ rArr.push(arr.slice(i*size,(i+1)*size)); } if(m>0){
      rArr.push(arr.slice(m*(-1)));
    }
  }
  return rArr;
}

chunkArrayInGroups(["a", "b", "c", "d"], 2);

十一、Slasher Flick 把数组中的前面N个元素去掉

思路
1、直接用Array.prototype.splice()把数组分割

代码如下:

function slasher(arr, howMany) {
  // it doesn't always pay to be first
  if(howMany === 0){
    return arr;
  }
  if(arr.length <= howMany){
    return [];
  }else{
    arr.splice(0,howMany);
    return arr;
  }
}

slasher([1, 2, 3], 2);

作者: 博主

Talk is cheap, show me the code!

发表评论

邮箱地址不会被公开。

Captcha Code