前端面試題 - 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
}
}