欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

JavaScript编程练习

程序员文章站 2024-02-26 19:15:22
...

1、移除数组 arr 中的所有值与 item 相等的元素,直接在给定的 arr 数组上进行操作,并将结果返回JavaScript编程练习
参考代码:

function removeWithoutCopy(arr, item) {
    for(var i = 0;i<arr.length;i++){
        if(arr[i]==2){
            arr.splice(i,1);
            i--;
        }
    }
    return arr;
}

2、移除数组 arr 中的所有值与 item 相等的元素。不要直接修改数组 arr,结果返回新的数组
JavaScript编程练习
参考代码:

function remove(arr, item) {
    var newArr = new Array();
    for(var i= 0;i<arr.length;i++){
        if(arr[i]!=item){
            newArr.push(arr[i]);
        }
    }
    return newArr;

}

3、计算给定数组 arr 中所有元素的总和
JavaScript编程练习
参考代码:

function sum(arr) {
    var total = 0;
    for(var i = 0;i<arr.length;i++){
        if(isNaN(arr[i])){
            break;
        }
        else{
            total = total + arr[i];
        }
    }
    return total;
}

4、找出元素 item 在给定数组 arr 中的位置
JavaScript编程练习
参考代码:

function indexOf(arr, item) {
    if(Array.prototype.indexOf){
        return arr.indexOf(item);
    }else{
    for(var i = 0;i<arr.length;i++){
        if(arr[i]===item){
            return i;
        }
        else
            return -1;
    }
   }
}

5、在数组 arr 末尾添加元素 item。不要直接修改数组 arr,结果返回新的数组
JavaScript编程练习
参考代码:

function append(arr, item) {
    var newArr=new Array();
    for(var i=0;i<arr.length;i++){
        newArr.push(arr[i]);
    }
    newArr.push(item);
    return newArr;
}

6、删除数组 arr 最后一个元素。不要直接修改数组 arr,结果返回新的数组
JavaScript编程练习
参考代码:
解决方法一:先拷贝数组,在把数组中的最后一个数用pop方法删除

function truncate(arr) {
    var newArr = new Array();
    for(var i=0;i<arr.length;i++){
        newArr.push(arr[i]);
    }
    newArr.pop();
    return newArr;
}

解决方法二:不把数组中的最后一个数传入新的数组中

function truncate(arr) {
    var newArr = new Array();
    var len = arr.length;
    for(var i=0;i<len-1;i++){
        newArr.push(arr[i]);
    }
    return newArr;
}

7、在数组 arr 开头添加元素 item。不要直接修改数组 arr,结果返回新的数组
JavaScript编程练习
参考代码:
解决方法一:

function prepend(arr, item) {
    var newArr = new Array();
    for(var i = 0;i<arr.length;i++){
        newArr.push(arr[i]);
    }
    newArr.splice(0,0,item);
    return newArr;
}

解决方法二:

function prepend(arr, item) {
    var a = arr.slice(0);
    a.unshift([item]);
    return a;
}

8、删除数组 arr 第一个元素。不要直接修改数组 arr,结果返回新的数组
JavaScript编程练习
参考代码:
解决方法一:

function curtail(arr) {
    var newArr = arr.slice(0);
    newArr.shift();
    return newArr;
}

解决方法二:

function curtail(arr) {
    return arr.slice(1);
}

解决方法三:

function curtail(arr) {
    var newArr = new Array();
    for(var i=1;i<arr.length;i++){
        newArr.push(arr[i]);
    }
    return newArr;
}

9、合并数组 arr1 和数组 arr2。不要直接修改数组 arr,结果返回新的数组
JavaScript编程练习
参考代码:
解决方法一:

function concat(arr1, arr2) {
    return arr1.concat(arr2);
}

解决方法二:

function concat(arr1, arr2) {
    var newArr = arr1.slice(0);
    for(var i = 0;i<arr2.length;i++){
        newArr.push(arr2[i]);
    }
    return newArr;
}

10、在数组 arr 的 index 处添加元素 item。不要直接修改数组 arr,结果返回新的数组
JavaScript编程练习
参考代码:

function insert(arr, item, index) {
    var newArr = arr.slice(0);
    newArr.splice(index,0,item);
    return newArr;
}

11、统计数组 arr 中值等于 item 的元素出现的次数
JavaScript编程练习
参考代码:
解决方法一:

function count(arr, item) {
    var count = 0;
    for(var i = 0;i<arr.length;i++){
        if(arr[i]==item){
            count++;
        }
    }
    return count;
}

解决方法二:
利用filter() 方法创建一个新的数组,新数组中的元素是通过检查指定数组中符合条件的所有元素。

function count(arr, item) {
    var count = arr.filter(function(a){
        return a===item;
    });
    return count.length;
}

12、找出数组 arr 中重复出现过的元素
JavaScript编程练习
参考代码:
注意判断是否重复,是否已经放入容器

function duplicates(arr) {
    var newArr = arr.sort(function(a,b){return a-b});
    var arr1 = new Array();
    for(var i = 0;i<newArr.length;i++){
    //判断是否重复,是否已经放入容器
        if(newArr[i]==newArr[i+1]&&newArr[i]!=newArr[i-1]){
            arr1.push(arr[i]);
        }
    }
    return arr1;
}

13、为数组 arr 中的每个元素求二次方。不要直接修改数组 arr,结果返回新的数组
JavaScript编程练习
参考代码:
解决方法一:

function square(arr) {
    var newArr = new Array();
    var squ = 0;
    for(var i =0;i<arr.length;i++){
        squ = arr[i]*arr[i];
        newArr.push(squ);
    }
    return newArr;
}

解决方法二:
使用map函数:map() 方法返回一个新数组,数组中的元素为原始数组元素调用函数处理后的值。
语法:array.map(function(currentValue,index,arr), thisValue);
currentValue:必选,为当前元素的值,
index:可选。当前元素的索引值
arr:可选。当前元素属于的数组对象
thisValue:可选。对象作为该执行回调时使用,传递给函数,用作 “this” 的值。
如果省略了 thisValue,或者传入 null、undefined,那么回调函数的 this 为全局对象。

function square(arr) {
    return arr.map(function(e){
        return e*e;
    })
}

13、在数组 arr 中,查找值与 item 相等的元素出现的所有位置
JavaScript编程练习
参考代码:
解决方法一:

function findAllOccurrences(arr, target) {
    var targetArr = new Array();
    for(var i = 0;i<arr.length;i++){
        if(arr[i]==target){
            targetArr.push(i);
        }
    }
    return targetArr;
}

解决方法二:

function findAllOccurrences(arr, target) {
    var targetArr = new Array();
    arr.filter(function(item,index){
        return item===target&&targetArr.push(index);
    });
    return targetArr;
}

14、给定的 js 代码中存在全局变量,请修复
思路:JavaScript中变量的声明使用var,如果不适用var声明,则默认为全局变量,只需要在前相应的变量前加上 var 即可
如下代码,如果不在myObject前加var,其为全局变量,如果要避免全局变量,只需在前面加上var

function globals() {
   var myObject = {
      name : 'Jory'
    };

    return myObject;
}

15、请修复给定的 js 代码中,函数定义存在的问题
JavaScript编程练习
原代码:
JavaScript编程练习
改正后代码:
链接:https://www.nowcoder.com/questionTerminal/a5de760a7cf24c0e890eb02eed34bc02?f=discussion
来源:牛客网

这道题是考函数声明与函数表达式的区别,原题的写法,是在两个逻辑分支里面各有一个函数声明,但是对于函数声明,解析器会率先读取并且让其在执行任何代码前可用,意思就是别的代码还没运行呢,两个getValue声明已经被读取,所以总是执行最新的那个。函数表达式,当解析器执行到它所在的代码行时,才会真正被解释执行,所以两个逻辑分支可以分别执行

function functions(flag) {
   var getvalue=null;
    if (flag) {
      getValue = function(){ return 'a'; }
    } else {
      getValue = function() { return 'b'; }
    }

    return getValue();
}

16、修改 js 代码中 parseInt 的调用方式,使之通过全部测试用例
JavaScript编程练习
JavaScript编程练习
参考代码:

function parse2Int(num) {
    return parseInt(num,10);
}

parseInt() 函数可解析一个字符串,并返回一个整数。
当参数 radix 的值为 0,或没有设置该参数时,parseInt() 会根据 string 来判断数字的基数。
当忽略参数 radix , JavaScript 默认数字的基数如下:
如果 string 以 “0x” 开头,parseInt() 会把 string 的其余部分解析为十六进制的整数。
如果 string 以 0 开头,那么 ECMAScript v3 允许 parseInt() 的一个实现把其后的字符解析为八进制或十六进制的数字。
如果 string 以 1 ~ 9 的数字开头,parseInt() 将把它解析为十进制的整数。

17、实现一个打点计时器,要求
(1)从 start 到 end(包含 start 和 end),每隔 100 毫秒 console.log 一个数字,每次数字增幅为 1
(2)返回的对象中需要包含一个 cancel 方法,用于停止定时操作
(3)第一个数需要立即输出

function count(start, end) {
    console.log(start++);
    var timer =  setInterval(function(){
        if(start<=end){
            console.log(start++);
        }
        else{
            clearInterval(timer);
        }
    },100);
    return {
         cancel : function(){
             clearInterval(timer);
         }
     };
 }

18、实现 fizzBuzz 函数,参数 num 与返回值的关系如下:
(1)如果 num 能同时被 3 和 5 整除,返回字符串 fizzbuzz
(2)如果 num 能被 3 整除,返回字符串 fizz
(3)如果 num 能被 5 整除,返回字符串 buzz
(4)如果参数为空或者不是 Number 类型,返回 false
(5)其余情况,返回参数 num
JavaScript编程练习

function fizzBuzz(num) {
    if(num===undefined||isNaN(num)){
        return false;
    }
    else if(num%3==0&&num%5==0){
        return "fizzbuzz";
    }
    else if(num%3==0){
        return "fizz";
    }
    else if(num%5==0){
        return "buzz";
    }
    else{
        return num;
    }
}
相关标签: Javascript