前端面试题 - js - es5
数据类型
基本数据类型检测
请补全JavaScript函数,要求以字符串的形式返回参数的类型。
注意:只需检测基本数据类型。
function _typeof(value) {
// 补全代码
let str = Object.prototype.toString.call(value)
let substring = str.substring(8, str.length -1).toLowerCase()
return substring
}
检测复杂数据类型
请补全JavaScript函数,要求以Boolean的形式返回第一个参数是否属于第二个参数对象的实例。
function _instanceof(left,right) {
// 补全代码
return Boolean(left instanceof right)
}
数据类型转换
请补全JavaScript函数,要求以字符串的形式返回两个数字参数的拼接结果。
示例:
- _splice(223,233) -> "223233"
- _splice(-223,-233) -> "-223-233"
function _splice(left,right) {
// 补全代码
return left+String(right)
return left+''+right;
}
运算符
阶乘
请补全JavaScript函数,要求返回数字参数的阶乘。
注意:参数为大于等于0的整数。
function _factorial(number) {
// 补全代码
if(number===1)
return 1;
return number*_factorial(number-1);
}
绝对值
请补全JavaScript函数,要求返回数字参数的绝对值。
function _abs(number) {
// 补全代码
return number>=0?number:-number
}
幂
请补全JavaScript函数,要求返回底数为第一个参数,幂为第二个参数的数值。
// tip
// Math.pow(0,0) // 1
// Math.pow(any,0) // 1
// Math.pow(1,any) // 1
// Math.pow(1,any) // 1
// Math.pow(-any,-any) //
// Math.pow(-any,-any) //
function _pow(number,power) {
// 补全代码
// return number**power // -1 ** any Error
return Math.pow(number, power)
}
**
x**n 相当于 Math.pow(x,n) 即x的n次方
平方根
请补全JavaScript函数,要求返回数字参数的平方根。
function _sqrt(number) {
// 补全代码
//JS Math对象方法 sqrt(x) x的平方根
return Math.sqrt(number);
}
余数
请补全JavaScript函数,要求返回数字参数除以2的余数。
function _remainder(value) {
// 补全代码
return value % 2
return value - (value>>1)*2
}
流程控制
请补全JavaScript函数,要求以字符串的形式返回数字参数所对应的星期。
示例:
- _getday(1) -> "星期一"
- _getday(7) -> "星期天"
function _getday(value) {
// 补全代码
return "星期"+['一','二','三','四','五','六','天'][value%7-1]
}
内置对象
从大到小排序
请补全JavaScript函数,要求将数组参数中的数字从大到小进行排序并返回。
function _sort(array) {
// 补全代码
return array.sort( (a,b) => b - a)
}
冒泡排序
function _sort(array) {
// 补全代码
var temp;
for(let i=0;i<array.length;i++){
for(let j=i+1;j<array.length;j++)
if(array[i]<array[j]){
temp=array[i];
array[i]=array[j];
array[j]=temp;
}
}
return array;
}
大写字符串
function _touppercase(string) {
return string.toUpperCase();
}
对象属性键名
请补全JavaScript函数,要求以数组的形式输出对象各个属性的键名。
示例:
- _keys({name:'nowcoder',age:7}) -> ['name','age']
注意:只需考虑对象属性均为原始数据类型的情况。
function _keys(object) {
// 补全代码
return Object.keys(object)
return Reflect.ownKeys(object)
return Object.getOwnPropertyNames(object)
}
function _keys(object) {
// 补全代码
let arr=[]
for (k in object)
arr.push(k);
return arr
}
对象数字
请补全JavaScript函数,要求将数字参数转换为对象的形式返回。
示例:
- typeof number === 'number' -> typeof _numbertoobject(number) === 'object'
function _numbertoobject(number) {
// return {number}
if( typeof number === 'number')
return new Number(number);
}
对象字符串
请补全JavaScript函数,要求将字符串参数转换为对象的形式返回。
示例:
- typeof string === 'string' -> typeof _stringtoobject(string) === 'object'
function _numbertoobject(string) {
return new String(string);
return {string}
}
去除字符串两端空格
function _trim(string) {
// 补全代码
return string.replace(/^\s*|\s*$/g,'')
return string.trim()
}
输出日期
请补全JavaScript函数,要求以字符串的形式输出时间戳参数所对应的"年-月-日"。
示例:
- _date(1631159776311) -> '2021-9-9'
function _date(number) {
// 补全代码
let date = new Date(number)
return date.getFullYear()+'-'+(date.getMonth()+1)+'-'+date.getDate()
return new Date(number).toLocaleDateString().replace('/','-').replace('/','-')
}
数字取整
function _int(value) {
// 补全代码
return value >> 0
return parseInt(value)
return Number(String(value).split('.')[0])
}
数组反转
function _reverse(array) {
// 补全代码
return array.reverse()
let newArray = []
array.map((e, i) => newArray.push(array[array.length - 1 - i]))
return newArray
}
数组转字符串
请补全JavaScript函数,要求将参数数组转换为字符串输出。
示例:
- _join([1,'2',3]) -> "123"
注意:只需考虑一维数组且数据类型为原始数据类型。
function _join(array) {
// 补全代码
return array.join('')
return array.toString().replace(/,/g,'');
return array.reduce((per,cur,index,array)=>per+cur,'');
}
数组最大值
function _max(array) {
// 补全代码
return Math.max(...array);
return Math.max.apply(null, array)
return array.sort((a,b)=>b-a)[0]
return array.sort()[array.length-1]
}
搜索数字
请补全JavaScript函数,要求以boolean的形式返回字符串参数中是否包含数字。
function _search(string) {
// 补全代码
return /\d/g.test(string)
for(var i=0;i<10;i++){
if(string.indexOf(i)!=-1){
return true
}
}
return false
}
头部插入元素
请补全JavaScript函数,要求将第二个参数插入第一个参数数组的头部,并且以数组的形式返回。
// Error return array.unshift(value) //这个返回的是新数组的长度,而不是新数组
function _unshift(array,value) {
// 补全代码
return [value,...array]
return [value].cancat(array)
// return array.splice(0,0,value) // Error []
}
尾部插入元素
function _push(array,value) {
// 补全代码
return [...array,value]
return array.cancat([value])
array.push(value)
return array
// return array.push(value) //这个返回的实际上是数组的长度
}
js-位置查找
请补全JavaScript函数,要求以数字的形式返回第一个参数数组中第二个参数所在的首个索引值。
注意:如果数组中不存在目标值,则返回-1。
function _indexof(array,value) {
// 补全代码
return array.indexOf(value)
return array.reduce((p,c,i) => p<0&&c===value? i:p, -1)
}
向下取整
function _floor(number) {
// 补全代码
return Math.floor(number)
}
整数反转
请补全JavaScript函数,要求将整数参数反转之后输出。
示例:
- _reverse(0) -> 0
- _reverse(233) -> 332
- _reverse(-223) -> -322
function _reverse(number) {
// 补全代码
var temp = (number+'').split('')
return number<0 ? -1*parseInt(temp.reverse().join('')) : parseInt(temp.reverse().join(''))
}
字符串搜索
请补全JavaScript函数,要求以boolean的形式返回字符串首参中是否包含第二个参数。
function _search(string,value) {
// 补全代码
return string.indexOf(value)==-1?false:true;
return string.indexOf(value)!=-1
}
函数
参数对象
请补全JavaScript函数,要求返回它的参数伪数组对象。
function getArguments (a,b,c) {
// 补充代码
return arguments
}
this指向
请补全JavaScript函数,使obj对象中fn函数返回该对象中a属性和b属性的和。
var obj = {
a: 1,
b: 2,
fn: function(){
// 补全代码
return this.a+this.b
}
}