JS经典题目练习

这篇博客涵盖了多个JavaScript编程题目,包括判断质数、数组翻转、冒泡排序、有序数组插入、数组去重、数组合并、随机验证码生成以及查找字符串中出现最多字母的次数和索引。这些练习题旨在提升JavaScript编程技能和问题解决能力。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1,写一个函数,能判断传入的一个数值是否是质数,如果是质数返回true,如果不是质数返回false,(质数:从2开始只能被1和自身整数的数)

	 function isPrime(number) {
	    var isPrime = true;
	        //质数的约数只有2个;1和自身;
	        for (var i = 2; i < number; i++) { //number % i === 0,i不可能是它本身。所以能整除就不是质数。
	             if (number % i == 0) {
	                 isPrime = false; //满足条件不是素数
	                 break; //跳出循环
	                }
	            }
	            return isPrime; // 返回结果
	        }
	    var re = isPrime(17);
	    console.log(re);

2,写一个函数,能翻转传入的任意数组,并把翻转结果通过返回值返回。

        function getArr(arr) {
            var arrNew = [];  //创建一个空数组 
            for (var i = arr.length - 1; i > -1; i--) {
                arrNew[arrNew.length] = arr[i];  //循环将arr内下标从后到前传入新数组
            }
            return arrNew;  //返回新数组
        }
        var re = getArr([10, 9, 8, 7, 6, 5, 4, 3, 2, 1]);
        console.log(re);


        // 翻转数组不使用新数组
	    for(var i = 0; i <arr.length /2; i ++){
	        var temp = arr[i];
	        arr[i] = arr[arr.length - 1 -i];
	        arr[arr.length - 1 -i] = temp;
	    }
	     for(var i = 0; i <arr.length; i++){
	        console.log(arr[i]);
	    }

3,冒泡

        function getArr(arr) {
            var max;
            for (var i = 0; i < arr.length - 1; i++) {
                for (var j = 0; j < arr.length - i - 1; j++) {
                    if (arr[j] > arr[j + 1]) {
                        max = arr[j];
                        arr[j] = arr[j + 1];
                        arr[j + 1] = max;
                    }
                }
            }
            return arr;
        }
        var re = getArr([1, 9, 5, 3, 20, 0]);
        console.log(re);

4,有一个从小到大排好序的数组。现输入一个数,要求按原来的规律将它插入数组中

var arr = [1,3,6,9,34,67];
    var input = parseInt(prompt('请输入一个数:'));
    for(var i = arr.length - 1; i >= 0; i--){
        if(input > arr[i]){      //遍历数组判断输入是否大于此数组元素
            for(var j = arr.length - 1; j >= i;j--){
                arr[j + 1] = arr[j];    //大于则将输入数前面元素都前移一位
            }
            arr[i+1] = input;     
            break;
        }else {    //判断输入数小于0的情况
            for(var i = arr.length - 1; i >=0; i--){
                arr[i+1] = arr[i];
            }
            arr[0] = input;
        }
    }
    console.log(arr);

5.数组去重

 function arrayDeduplication(arr){
        var newArr = []; //定义一个新数组
        for(var i = 0; i < arr.length; i++){
            var bl = true;
            for(var j = 0; j < newArr.length; j++){
                if(arr[i] === newArr[j]){  //判断新数组中有没有传入数组的元素  
                    bl = false;
                    break;
                }
            }
            if(bl){  
                newArr[newArr.length] = arr[i];
            }
        }
        console.log(newArr);
    }
    arrayDeduplication([0,6,6,9,8,5,5]);

6.合并数组

function concatArray(arr1,arr2){
        for(var i = 0; i < arr2.length; i++){
            arr1[arr1.length] = arr2[i];
        }
        return arr1;
    }
    var result = concatArray([0,1,2],[9,8,7]);
    console.log(result);

7.随机生成验证码

function getCode(targetLength){
        var str = 'QWERTYUIOPASDFGHJKLZXCVBNM1234567890';   //定义一个码源
        var targetStr = '';   //定义生成的字符串
        for(var i = 0; i <targetLength; i++){  //参数用于决定生成几位数的验证码
            targetStr += str[Math.floor((Math.random() * str.length))];  //遍历生成随机数
        }
        return targetStr;
    }

    console.log(getCode(4));

8.打印字符串中出现字母最多的次数和索引位置

function logArr(arr) {
        var obj = {} //定义一个空对象存储属性唯一值
        for (var i = 0; i < arr.length; i++) {
            var charS = arr[i];
            //判断对象中是否存在此字符串  存在则值加1  不存在创造此属性
            obj[charS]? obj[charS]++ : obj[charS] = 1;
            //在对象中创造此字符的数组存储字符出现的下标
            obj[charS+'arr']? obj[charS+'arr'].push(i) : obj[charS+'arr'] = [i];
        }
        var max = 0;
        var resultkey = '';
        //遍历对象
        for(var key in obj){
            if(typeof obj[key] == 'number'){ //判断值为数组的情况,排除数组
                if(max < obj[key]){
                    max = obj[key];
                    resultkey = key;
                }
            }
        }
        console.log('出现字母最多的是'+ resultkey, '次数是' + max, '索引位置为:' + obj[resultkey +'arr']);
        console.log(obj);
    }
        logArr('aaarrrbggggqqqqqqquo');
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值