JavaScript能力测试01(简单级别),你能得多少分?我们的宗旨是碾压面试官!

目录

网上看到一个能力测试的,感觉蛮好玩,就拿题目来做了,哈哈

看题(答案在后面),题目全部是函数封装哦。

答案参考


网上看到一个能力测试的,感觉蛮好玩,就拿题目来做了,哈哈

看题(答案在后面),题目全部是函数封装哦。

1.封装一个函数 indexOf(arr,item) ,找出元素 item 在给定数组 arr 中的位置,不存在返回 -1

比如:arr [1,3,5,7,9]   item 7 返回 3

2.封装一个函数 sum(arr) ,计算给定数组 arr 中所有元素的总和 

比如: [1,3,5] 返回 9

3.封装一个函数 remove(arr, item),删除数组 arr 中与item 相等的元素,原数组不变,返回新的数组

比如  arr : [1,3,5,7]   item : 5  返回:[1,3,7](这个是新数组)

4.封装一个函数 removeWithoutCopy(arr, item) ,移除数组 arr 中与 item 相等的元素,在原数组上进行操作,并返回此数组

比如  arr : [1,3,5,7]   item : 5  返回:[1,3,7] (这个是原数组)

5.封装一个函数 prepend(arr, item) ,在数组 arr 开头添加元素 item,原数组不变,返回新的数组

比如  arr : [1,3,5,7]   item : 9  返回:[9,1,3,5,7] 

6.封装一个函数 count(arr, item),统计数组 arr 中值等于 item 的元素出现的次数

比如  arr : [1,3,5,7,5,8,5]   item : 5  返回:3

7.封装一个函数 duplicates(arr),找出数组 arr 中重复出现过的元素

比如 [1, 3, 3, 5, 3, 1, 5, 3,7,7] 返回[1,3,57]

8.封装一个函数 count(start, end) ,实现计时器功能

(1)从 start 到 end(包含 start 和 end),每隔 100 毫秒 console.log 一个数字,每次数字增幅为 1

(2)第一个数需要立即输出

(3)返回的对象中需要包含一个 cancel 方法,用于停止定时操作
9.封装一个函数 closures(arr, fn),闭包

(1)返回一个函数数组 result,长度与 arr 相同

(2)运行 result 中第 i 个函数,即 result[i](),结果与 fn(arr[i]) 相同

10.封装一个函数 secondary(fn) ,二次封装

(1)此函数返回一个result 函数,调用result 函数后,返回的结果与调用函数 fn 的结果一致

(2)fn 的调用参数为 secondary的第一个参数之后的全部参数以及 result 的调用参数

 

答案参考(自己做的,不是标准答案哦)

答案1

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

答案2

function sum(arr) {
    var sum=0;
    arr.forEach(function(item){
        sum+=item;
    })
    return sum
}

答案3

function remove(arr, item) {
    var newArr=[];
    arr.forEach(function(a){
        if(a!=item){
            newArr.push(a);
        }
    })
    return newArr
}

答案4

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

答案5

function prepend(arr, item) {
    var newArr=[item];
    newArr = newArr.concat.apply(newArr,arr)
    return newArr;
}

答案6

function count(arr, item) {
    let n=0
    arr.forEach((a)=>{
        if(a===item){
            n++;
        }
    })
    return n;
}

答案7

function duplicates(arr) {
    var newArr=[],tempArr=[];
    arr.forEach((a)=>{
        if(tempArr.indexOf(a)!=-1){
        	if(newArr.indexOf(a)==-1){
        		newArr.push(a);
        	}
        }else{
            tempArr.push(a);
        }
    })
    return newArr;
}

答案8

function count(start, end) {
        console.log(start);
        var timter = setInterval(function(){
             console.log(++start);
            if(start>=end){
                clearInterval(timter);
            }
        },100)
    return {
        'cancel':function(){
            clearInterval(timter);
        }
    } 
}

答案9

function closures(arr, fn) {
    var result=[]
    arr.forEach((a)=>{
       result.push(fn.bind(a,a))
    })
    
    return result;
}

答案10

function secondary(fn) {
     var args = Array.prototype.slice.call(arguments,1);
     return function(){
         var args2=Array.prototype.slice.call(arguments,0);
         args = args.concat(args2);
        return  fn.apply(null,args);
     }
}

猜你喜欢

转载自blog.csdn.net/dkm123456/article/details/111562771