练习题

1.实现向数组末尾追加一个元素有多少种方式
var  arr = [1,2,3,4,5,6,7,8,9]; 
//   方式一: 使用 push();
        var  arr = [1,2,3,4,5,6,7,8,9];
        console.log(arr); //(9) [1, 2, 3, 4, 5, 6, 7, 8, 9]
        console.log(arr.push(10)); // 10 这是返回这个数组的长度
        console.log(arr) //(10) [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
//   方式二:使用 splice();
        arr.splice(9,0,10);  // 参数9:要插入的下标,参数0:需要替换0个元素, 参数10: 要插入的元素
        console.log(arr); //(10) [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
//   方式三:concat():拼接数组,返回值是拼接好的新数组,但是不会改变原始数组!!
        console.log( arr.concat(10) ); //(10) [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
        console.log(arr); //(9) [1, 2, 3, 4, 5, 6, 7, 8, 9]
 //    方式四 :通过使用reverse() 将函数反转排序,然后在通过使用 unshift()在头部添加元素,再使用一次反转将元素恢复回去;
       var newarr = arr.reverse();
       console.log(newarr); //(9) [9, 8, 7, 6, 5, 4, 3, 2, 1]
       newarr.unshift(10); 
       console.log(newarr); //(10) [10, 9, 8, 7, 6, 5, 4, 3, 2, 1]
       console.log(newarr.reverse()); //(10) [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
//      方式五:使用 reverse() 方法将数组反转,然后使用 splice() 方法,在下标为0的地方添加元素10,然后在使用 reverse() 反转回去
       var newarr = arr.reverse();
       console.log(newarr); //(9) [9, 8, 7, 6, 5, 4, 3, 2, 1]
       newarr.splice(0,0,10);
       console.log(newarr.reverse()); //(10) [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
2.编写函数,判断一个字符串是否是 “可回文字符串”

abcba: 第一个和倒数第一是相同,第二和倒数第二个

// 方式一
 function huiwen(str) {  
       return str == str.split('').reverse().join('');
    }
    var a =  huiwen('abcba');
    console.log(a) // true
// 方式二
 // 功能:判断一个字符串是不是回文字符串
// 参数:字符串
// 返回值:true:是回文字符串;false:不是回文字符串

function isHui(str){

    var len = str.length;
    // 只需要循环字符串长度的一半就行
    for(var i=0;i<parseInt(len/2);i++){
        //如果第  n 个字符和 倒数第 n个字符有一个不相等,那么肯定不是回文字符串
        if(str.charAt(i)!= str.charAt(len-1-i)){
            return false;
        }
    }
    // 代码能执行到此行,说明肯定没有执行26行的 return false;即:第n个字符和倒数第n个字符都相等。
    // 那么肯定是回文字符串
    return true;

}
console.log(isHui("abccba"));//true
console.log(isHui("abcdcba"));//true
console.log(isHui("abcdefg"));//false
3. 数字字母混合验证码(数字+大写字母+小写字母)
function getpassword(n){
        // 用一个空字符串来接收这个验证码
         var str = '';
        //   验证码中的数组元素 
        var arr = ['0','1','2','3','4','5','6','7','8','9','A','B','C','D','a','b','c','d',];
        
        for(var i=1; i<=n;i++){
             // 随机获取数组的下标;
            var index = parseInt(Math.random()*18);
            // console.log(index);  

            // 每循环一次,生成一个数,并将数拼接在 str 上面;
            str += arr[index];
        }
       return str;
     }
    var a = getpassword(4)
     console.log(a)

运行代码:
在这里插入图片描述

4. aabccd统计每个字符出现的次数,去掉重复的字符,使结果显示 abcda:统计每个字符出现的次数aaabbbcccdddaa 统计结果为:a3b3c3d3a2;b:aaabbbcccddd 去掉相同的字符 abcd
function fn(){
    var str = 'aaabbbcccdddaa';
    
    //   思路:
        // 1、要定义一个变量,来记录当前字符(庄家字符);
        var char = str.charAt(0);
        // 2、定义一个变量来统计重复的次数;
        var count = 0;
        // 3、定义一个变量来保存统计的结果
        var result = '';
        // 记录所有的字符串(去重的结果)
        var t ='';
        // 循环字符串,判断字符串当前的字符串与庄家的字符串是否相等
        for(var i=0;i<str.length;i++){
            if(str.charAt(i) === char){
                count++;
            }else{ //更换庄家字符串
            // 换庄家字符串之前,先把老庄家和他记录的次数记录起来
                result += char+count; // 统计 a3
                t += char;
                char = str.charAt(i);
                count = 1; 
            }
        }
    
    result += char+count;
    t += char;
    console.log(result);
    console.log(t);
}
fn() //a3b3c3d3a2

运行结果:
在这里插入图片描述

5、编写一个函数,获得一个十六进制的随机颜色的字符串(例如:#20CD4F)
//功能: 获取一个 十六进制的随机颜色字符串 例如:#25acad;
//参数:无;
//返回值: 颜色值

 function fn(){
        // 思路: 每次循环 获得一个 0~ 16 之间的随机数,转成 十六进制的数,然后拼接
        var str= '#';
        for(var i=0;i<6;i++){
            var a = Math.floor(Math.random()*16).toString(16);  //Math.floor 向下取整,舍去小数位  
            // var a = parseInt(Math.random()*16).toString(16); //取整舍去小数位
            str += a;
        }
        return str;
    }
    var color = fn();
    console.log(color)

运行结果:
在这里插入图片描述
能生成 十六进制的随机数思路:
六位数就要循环六次,每一次循环生成一个随机数,然后使用Math.floor取整,获取的整数通过toString(16)将其转换为 十六进制的数字,最后进行拼接成一个完整的 十六进制的颜色

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值