文档库

最新最全的文档下载
当前位置:文档库 > 机试题

机试题

?找出元素 item 在给定数组 arr 中的位置
如果数组中存在 item,则返回元素在数组中的位置,否则返回 -1
例:indexOf([ 1, 2, 3, 4 ], 3),输出索引为2

计算给定数组 arr 中所有元素的总和
数组中的元素均为 Number 类型
例:sum([ 1, 2, 3, 4 ]),输出为10

移除数组中的元素
移除数组 arr 中的所有值与 item 相等的元素。不要直接修改数组 arr,结果返回新的数组
remove([1, 2, 3, 4, 2], 2),输出为[1,3,4]

添加元素
在数组 arr 末尾添加元素 item。不要直接修改数组 arr,结果返回新的数组
append([1, 2, 3, 4], 10),输出为[1, 2, 3, 4, 10]

删除数组最后一个元素
删除数组 arr 最后一个元素。不要直接修改数组 arr,结果返回新的数组
truncate([1, 2, 3, 4]),输出为[1, 2, 3]

查找重复元素
找出数组 arr 中重复出现过的元素
duplicates([1, 2, 4, 4, 3, 3, 1, 5, 3]).sort(),输出为[1, 3, 4]

求二次方
为数组 arr 中的每个元素求二次方。不要直接修改数组 arr,结果返回新的数组
square([1, 2, 3, 4]),输出为[1, 4, 9, 16]

查找元素位置
在数组 arr 中,查找值与 item 相等的元素出现的所有位置
findAllOccurrences('abcdefabc'.split(''), 'a').sort(),输出为[0, 6]

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

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

柯里化
已知 fn 为一个预定义函数,实现函数 curryIt,调用之后满足如下条件:
1、返回一个函数 a,a 的 length 属性值为 1(即显式声明 a 接收一个参数)
2、调用 a 之后,返回一个函数 b, b 的 length 属性值为 1
3、调用 b 之后,返回一个函数 c, c 的 length 属性值为 1
4、调用 c 之后,返回的结果与调用 fn 的返回值一致
5、fn 的参数依次为函数 a, b, c 的调用参数
var fn = function (a, b, c) {return a + b + c}; curryIt(fn)(1)(2)(3);,输出为6

获取指定字符串
给定字符串 str,检查其是否包含 3 个连续的数字
1、如果包含,返回最新出现的 3 个数字的字符串
2、如果不包含,返回 false
captureThreeNumbers('9876543'),输出为987

字符串字符统计
统计字符串中每个字符的出现频率,返回一个 Object,key 为统计字符,value 为出现频率
1. 不限制 key

的顺序
2. 输入的字符串参数不会为空
3. 忽略空白字符
count('hello world'),输出为{h: 1, e: 1, l: 3, o: 2, w: 1, r: 1, d: 1}

修改 this 指向
封装函数 f,使 f 的 this 指向指定的对象
bindThis(function(a, b){return this.test + a + b}, {test: 1})(2, 3),输出为6