美文网首页
js基础阶段练习题

js基础阶段练习题

作者: duans_ | 来源:发表于2018-10-10 14:35 被阅读90次

    编写一个函数,实现数组去重

    • 要求不能使用系统方法
    function arr_unique(arr) {
                //定义一个新数组,用于存放去重后的元素
                var newArr = [];
                for (i = 0; i < arr.length; i++) {
                    //1-假设新数组中不存在当前元素
                    var flag = false;
                    for (var j = 0; j < newArr.length; j++) {
                        //2-if条件一旦成立,说明我们的假设是错误的,所以立马否定我们的假设
                        if (arr[i] == newArr[j]) {
                            flag = true;
                            break;
                        }
                    }
                    //3-将flag为false的元素加入新数组中并返回
                    if (flag == false) {
                        newArr[newArr.length] = arr[i];
                    }
                }
                return newArr;
            }
    
    

    编写一个函数, 判断一个数是不是质数(素数)

    • 方案1:
    function zhishu(n) {
                var count = 0;
                for (var i = 1; i <= n; i++) {
                    if (n % i == 0) {
                        count++
                    }
                }
                if (count <= 2) {   //是质数
                    return true;
                } else {  //不是质数
                    return false;
                }
            }
    
    • 方案2:
    function zhishu2(n) {
                //1-假设是质数
                var flag = true;
                //2-从2-(n-1)中,如若能找到一个被n整除的数,说明n不是质数
                for (var i = 2; i < n; i++) {
                    if (n % i == 0) {
                        flag = false;
                    }
                }
                return flag;
            }
    

    编写一个函数, 实现求两个一维数组的补集

    • 前提条件:arr2是arr1的子集
    function getDiff(arr1, arr2) {
                var diffArr = [];
                for (var i = 0; i < arr1.length; i++) {
                    var flag = false;
                    for (var j = 0; j < arr2.length; j++) {
                        if (arr1[i] == arr2[j]) {
                            flag = true;
                        }
                    }
                    if (flag == false) {
                        diffArr[diffArr.length] = arr1[i];
                    }
                }
                return diffArr;
            }
    

    编写一个函数, 实现求两个任意正整数的最大公约数

    function getMax(min,max){
                //1-用于存放min和max的所有公约数
                var arr=[];
                for(i=1;i<=min;i++){
                    if(min%i==0&&max%i==0){
                        arr[arr.length]=i;
                    }
                }
                //2-取出数组最后一项,即为最大公约数
                return arr[arr.length-1];
            }
    

    编写一个函数, 实现求两个任意正整数的虽小公倍数

    function getMin(min,max){
                //记录循环次数
                var count=0;
                //用于保存min的倍数
                var times;
                for(var i=min;i<=max;i++){
                    //times表示min(较小数)的倍数;min的倍数肯定比min本身要大
                    times=min*i;
                    count++;
                    if(times%max==0){
                        break;
                    }
                }
                console.log('循环执行次数: '+count);
                return times;
               
            }
    

    编写一个函数, 实现求两个数组的交集

    function getMixed(arr1,arr2) {
                var obj = {};
                var mixed=[];
                for (var i = 0; i < arr1.length; i++) {
                    if(!obj[arr1[i]]){
                        obj[arr1[i]]=1;
                    }else{
                        obj[arr1[i]]++;
                        mixed[mixed.length]=arr1[i];
                    }
                }
                for(var j=0;j<arr2.length;j++){
                    if(!obj[arr2[j]]){
                        obj[arr2[j]]=1;
                    }else{
                        obj[arr2[j]]++;
                        if(obj[arr2[j]]==2){
                            mixed[mixed.length]=arr2[j];
                        }
                    }    
                }
                return mixed;
    
            }
    

    编写一个函数, 实现求两个数组的并集

    function getUnion(arr1,arr2){
                var obj={};
                var union=[];
                for(var i=0;i<arr1.length;i++){
                    if(!obj[arr1[i]]){
                        obj[arr1[i]]=1;
                        union[union.length]=arr1[i];
                    }
                    
                }
                for(var j=0;j<arr2.length;j++){
                    if(!obj[arr2[j]]){
                        obj[arr2[j]]=1;
                        union[union.length]=arr2[j];
                    }
                    
                }
                return union;
            }
    

    补充练习题目

    1. for循环 打印99乘法表

    2. 求整数1~100的累加值,但要求跳过所有个位为3的数

    3. 打印出第5个能同时被3、5、7整除的数

    4. 得到下面数组 ["blue","cyan","pink","red","black","green","yellow"] 中字符串"red"的索引值

    相关文章

      网友评论

          本文标题:js基础阶段练习题

          本文链接:https://www.haomeiwen.com/subject/cjvpaftx.html