javsscript练习

1.翻转字符串

function reverseString(str) {

str=str.split('');把字符串转化成数组
str=str.reverse();翻转数组顺序
str=str.join('');数组转化成字符串
return str;
}

reverseString("hello");

 

2.检查回文字符串

JavaScript replace() 方法 replace 方法的结果是一个完成了指定替换的 stringObj 对象的复制

function palindrome(str) {
var str1=str;
str1=str1.replace(/\W+/g,"");  //正则表达式筛选所有非单词字符,替换为空的字符串
str1=str1.replace(/\_+/g,"");  //正则表达式筛选所有下划线字符,替换为空的字符串
str1=str1.toLowerCase();  //将所有的文字变为小写
var str翻转;
str翻转=str1.split('').reverse().join('');
if(str翻转==str1){
return true;
}else{
return false;
}
return str翻转;
}

palindrome("A man, a plan, a canal. Panama");

 有更加优化的地方 :http://blog.csdn.net/github_38414220/article/details/78411374

 

 

3.找出最长单词

 

在句子中找出最长的单词,并返回它的长度

 

function findLongestWord(str) {

str=str.split(" ");
var max=0;
for(var i=0;i<str.length;i++){
if(str[i].length>=max){
max=str[i].length;
}
}
return max;
}

findLongestWord("The quick brown fox jumped over the lazy dog");

 

句中单词首字母大写

确保字符串的每个单词首字母都大写,其余部分小写。

方法①: 用slice(start.end)从已有的数组中返回选定的元素,返回一个新的数组

    如果是负数,那么它规定从数组尾部开始算起的位置。也就是说,-1 指最后一个元素,-2 指倒数第二个元素,以此类推。

    注意:该方法并不会修改数组,而是返回一个子数组。如果想删除数组中的一段元素,应该使用方法 Array.splice()。

function titleCase(str) {
str=str.split(" ");
for(var i=0;i<str.length;i++){
str[i]=str[i][0].toUpperCase()+str[i].slice(1,str[i].length).toLowerCase();
}

return str.join(" ");
}

titleCase("I'm a little tea pot");

方法②:charAt() 方法可返回指定位置的字符。JavaScript 并没有一种有别于字符串类型的字符数据类型,所以返回的字符是长度为 1 的字符串。

function titleCase(str) {
str=str.toLowerCase().split(" "); //所有字符变成小写
for(var i=0;i<str.length;i++){
var strFrist=str[i].charAt(0);
str[i]=str[i].replace(strFrist,function replace(strFrist){     //将第一个字母替换成大写字母 并且返回
return strFrist.toUpperCase();

})
}

return str.join(" ");
}

titleCase("I'm a little tea pot");

 

4.找出多个数组中的最大数

    .Math.max 返回给定的一组数字中的最大值。如果给定的参数中至少有一个参数无法被转换成数字

    .apply(obj,args) 详解:https://wenku.baidu.com/view/22ea833c67ec102de2bd89c5.html

      方法能劫持另外一个对象的方法,继承另外一个对象的属性. Function.apply(obj,args)方法能接收两个参数

       obj:这个对象将代替Function类里this对象

       args:这个是数组,它将作为参数传给Function(args-->arguments)

    .push() 将一个值丢到数组里面

function largestOfFour(arr) {
var max=0;
var b=[];
for(var i=0;i<arr.length;i++){
max=Math.max.apply(null,arr[i])
b.push(max);
}
return b;
}

largestOfFour([[4, 5, 1, 3], [13, 27, 18, 26], [32, 35, 37, 39], [1000, 1001, 857, 1]]);

 

方法二 还没看

function largestOfFour(arr) {
    var newArr=[];
    for(var i=0;i<arr.length;i++){    //遍历大数组中的每个小数组,然后将每个小数组排序(降序)
        arr[i].sort(function compare(x,y){
            return y-x;
        });
        newArr.push(arr[i][0]);    //将降序后每个小数组的第一个数(即最大值)丢进新数组中
     }
        return newArr;
}

largestOfFour([[4, 5, 1, 3], [13, 27, 18, 26], [32, 35, 37, 39], [1000, 1001, 857, 1]]);


5.检查字符串结尾

  str.substr(start[, length])

开始提取字符的位置。如果为负值,则被看作 strLength - start,其中 strLength 为字符串的长度(例如,如果 start 为 -3,则被看作 strLength-3)length
可选。提取的字符数字
例如var str = "abcdefghij";
console.log("(1,2): "    + str.substr(1,2));   // (1,2): bc
console.log("(-3,2): "   + str.substr(-3,2));  // (-3,2): hi
console.log("(-3): "     + str.substr(-3));    // (-3): hij
console.log("(1): "      + str.substr(1));     // (1): bcdefghij

function confirmEnding(str, target) {
var targetLength=target.length;
//var targetLength1=0-target.length;
if(str.substr(-target.length)==target){
return true;
}

return false;
}

confirmEnding("Bastian", "n");

 

6.重复输出字符串

function repeat(str, num) {
var str1=str;
if(num<0){
return "";
}else {
for(var i=1;i<num;i++){
str1 +=str;
}
}
return str1;
}

repeat("ab", 4);

 

7.截断字符串

如果字符串的长度比指定的参数num长,则把多余的部分用...来表示

function truncate(str, num) {
var str1;
var str2="..."
if(str.length<=num){
return str;
}else{
if(num>3){
str1=str.slice(0,num-3)+str2;
}else{
str1=str.slice(0,num)+str2;
}
return str1;
}
}

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

 

8.猴子吃香蕉, 分割数组

(猴子吃香蕉可是掰成好几段来吃哦)

把一个数组arr按照指定的数组大小size分割成若干个数组块。

例如:chunk([1,2,3,4],2)=[[1,2],[3,4]];

 如下为第一次成功编译:简直无法忍受,

function chunk(arr, size) {
  var arr1=[];
  var size1=size;
  var yushu=Math.ceil(arr.length/size);//向上取整,有小数就整数部分加1 Math.ceil(5/2)
  for(var i=0;i<yushu;i++){
    var arr2=arr.slice(size-size1,size);
    arr1.push(arr2);
    size+=size1;
  }
  return arr1;
}
chunk(["a", "b", "c", "d","e"], 2);

 如下为网上查询后的优化编译......

function chunk(arr, size) {
  var result=[];
  for(var i=0;i<arr.length;i+=size)
    {
      result.push(arr.slice(i,i+size));
    }
  return result;
}

chunk(["a", "b", "c", "d"], 3);

9.截断数组

splice() 方法通过删除现有元素和/或添加新元素来更改一个数组的内容

 

function slasher(arr, howMany) {
    arr.splice(0,howMany,"fuck");//从第1位开始,删除howMany个元素,插入“fuck”元素
  return arr;
}

slasher(["burgers", "fries", "shake"], 1)

 

10.

比较字符串

如果数组第一个字符串元素包含了第二个字符串元素的所有字符,函数返回true。

str.indexOf(searchValue[, fromIndex])一个字符串表示被查找的值

"Blue Whale".indexOf("", 11); // returns 10

"Blue Whale".indexOf("Whale", 5); // returns 5

当检测某个字符串是否存在于另一个字符串中时,可使用下面的方法:

"Blue Whale".indexOf("Blue") !== -1; // true
"Blue Whale".indexOf("Bloe") !== -1; // false
function mutation(arr) {
  var arr1=arr[0].toLowerCase();
  var arr2=arr[1].toLowerCase();
  for(var i=0;i<arr[1].length;i++){
    if(arr1.indexOf(arr2[i])==-1){
      return false;     
    }//else{return true} 这里加这个就不能成立

    
  }return true;
}
mutation(["hello", "hey"]);    

 





posted @ 2017-12-12 22:56  Old司机  阅读(345)  评论(0编辑  收藏  举报