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

22 阅读3分钟

img img

网上学习资料一大堆,但如果学到的知识不成体系,遇到问题时只是浅尝辄止,不再深入研究,那么很难做到真正的技术提升。

了解详情》docs.qq.com/doc/DSlVlZExWQ0FRSE9H

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


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);

img img

网上学习资料一大堆,但如果学到的知识不成体系,遇到问题时只是浅尝辄止,不再深入研究,那么很难做到真正的技术提升。

了解详情》docs.qq.com/doc/DSlVlZExWQ0FRSE9H