前端-笔试刷题-JavaScript
基本数据类型检测
- 题目描述
请补全JavaScript函数,要求以字符串的形式返回参数的类型。
注意:只需检测基本数据类型。
点击查看代码
function _typeof(value) {
// 补全代码
return Object.prototype.toString.call(value).slice(8, -1).toLowerCase();
}
function _typeof(value) {
// 补全代码
return typeof(value);
}
检查复杂数据类型
- 题目描述
请补全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+''+right
}
阶乘
- 题目描述
请补全JavaScript函数,要求返回数字参数的阶乘。
注意:参数为大于等于0的整数。
点击查看代码
//在函数体内实现一个循环,完成阶乘计算。
function _factorial(number) {
if(typeof number !== 'number') return
if(number < 0) return
for(let i=number-1 ; i>0 ; i--) {
number *= i
}
return number
}
// for循环
function _factorial(number) {
// 补全代码
let res = 1;
for(let i=1;i<=number;i++) {
res *=i;
}
return res;
}
// while循环
function _factorial(number) {
// 补全代码
let res = 1;
while(number>=1) {
res *=number;
number--;
}
return res;
}
//函数套函数
function _factorial(number) {
// 补全代码
if(number==1){
return 1
}else{
return number*_factorial(number-1)
}
}
当参数等于0时,返回1。
当参数不等于0时,返回当前值与fn(当前值 - 1)的积。
整个函数的终止条件为:当参数为0时。
绝对值
- 题目描述
请补全JavaScript函数,要求返回数字参数的绝对值。
点击查看代码
function _abs(number) {
// 补全代码
//方法一:JS Math对象方法abs()求绝对值
return Math.abs(number)
//方法二:三元运算符
return number >=0 ? number : -number
//方法三:if条件判断
if(number > 0)return number
else{return -number}
}
幂
- 题目描述
请补全JavaScript函数,要求返回底数为第一个参数,幂为第二个参数的数值。
点击查看代码
function _pow(number,power) {
// 补全代码
// 补全代码
// methods1 Math.pow()方法
return Math.pow(number, power); //method1
// methods2 遍历相乘
let x = 1;
for(let i = 1; i <= power; i++) {
x *= number;
}
return x;
// methods3 递归 x^0 == 1
return (power > 0) ? number * _pom(number, power -1) : 1/(number * _pom(number, power -1));
}
效果图:
平方根
- 题目描述
请补全JavaScript函数,要求返回数字参数的平方根。
点击查看代码
function _sqrt(number) {
// 补全代码
return Math.sqrt(number)
}
// 法一:调库
return Math.sqrt(number);
// 法二:牛顿迭代法
if (number === 0 || number === 1) {
return number
}
let r = number
while (r * r - number > 0.1) {
// 逼近公式,证明略,此处照抄
r = (r + number / r) / 2
}
let rr = Math.round(r) // 舍位进位
if (rr * rr === number) {
return rr
} else {
return Math.floor(r)
}
}
`
效果图:
余数
- 题目描述
请补全JavaScript函数,要求返回数字参数除以2的余数。
点击查看代码
function _remainder(value) {
// 补全代码
return value%2
}
效果图:
返回星期数
- 题目描述
请补全JavaScript函数,要求以字符串的形式返回数字参数所对应的星期。
示例:
- _getday(1) -> "星期一"
- _getday(7) -> "星期天"
点击查看代码
function _getday(value) {
// 补全代码
let obj={
1:'星期一',
2:'星期二',
3:'星期三',
4:'星期四',
5:'星期五',
6:'星期六',
7:'星期天',
}
return obj[value]
}
效果图:
从大到小排序
- 题目描述
请补全JavaScript函数,要求将数组参数中的数字从大到小进行排序并返回。
function _sort(array) { if(array instanceof Array) return array.sort((left,right) => right - left) }
点击查看代码
// 法一:选择排序
function _sort(array) {
for(let i = 0; i < array.length; i++) {
for(let j = i + 1; j < array.length; j++) {
if(array[i] < array[j]) {
let temp = array[i];
array[i] = array[j];
array[j] = temp;
}
}
}
return array;
}
// 法二:冒泡排序
function _sort(array) {
for(let i = 0; i < array.length; i++) {
for(var j = 0; j < array.length - i - 1; j++) {
if(array[j] < array[j + 1]) {
let temp = array[j];
array[j] = array[j + 1];
array[j + 1] = temp;
}
}
}
return array;
}
// 法三:数组排序方法
function _sort(array) {
return array.sort((a,b) => b - a);
}
大写字符串
- 题目描述
请补全JavaScript函数,要求将字符串参数转换为大写字符串并返回。
function _touppercase(string) { // 补全代码 return string.toUpperCase() }
点击查看代码
function _touppercase(string) {
// 1.return string.toUpperCase();
// 2. "a".charCodeAt String.fromCharCode(97)
// 补全代码
let newString = "";
for(let i = 0; i < string.length; i++) {
// 字符串:A-Z a - z
// a 97 z 122
if(string[i].charCodeAt() >= 97 && string[i].charCodeAt() <= 122) {
newString += String.fromCharCode(string[i].charCodeAt() - 32);
}
else {
newString += string[i];
}
}
return newString;
}
** 对象属性键名 **
- 题目描述
请补全JavaScript函数,要求以数组的形式输出对象各个属性的键名。
示例:
- _keys({name:'nowcoder',age:7}) -> ['name','age']
注意:只需考虑对象属性均为原始数据类型的情况。
function _keys(object) { // 补全代码 let keys = [],len=0 for(keys[len++] in object); return keys }
点击查看代码
function _keys(object) {
// 补全代码
let arr = [];
for (let i in object) {
arr.push(i)
}
return arr
}
function _keys(object) {
// 补全代码
return Object.keys(object)
}
效果图:
** 对象数字 **
- 题目描述
请补全JavaScript函数,要求将数字参数转换为对象的形式返回。
示例:
- typeof number === 'number' -> typeof _numbertoobject(number) === 'object'
点击查看代码
function _numbertoobject(number) {
// 补全代码
return new Object(number)
}
效果图:
**对象字符串 **
- 题目描述
请补全JavaScript函数,要求将字符串参数转换为对象的形式返回。
示例:
- typeof string === 'string' -> typeof _stringtoobject(string) === 'object'
点击查看代码
function _stringtoobject(string) {
// 补全代码
return new String(string)
}
效果图:
** 去除字符串两端的空格 **
- 题目描述
请补全JavaScript函数,要求去除参数字符串两端的空格并返回。
点击查看代码
function _trim(string) {
// 补全代码
return string.trim();
}
function _trim(string) {
// 补全代码
return string.replace(/^\s|\s$/g,"");
}
** 输出日期 **
- 题目描述
请补全JavaScript函数,要求以字符串的形式输出时间戳参数所对应的"年-月-日"。
示例:
- _date(1631159776311) -> '2021-9-9'
点击查看代码
function _date(number) {
// 补全代码
let date = new Date(number);
// 注意月份要加1,因为是从0开始计算的
return date.getFullYear() + '-' + (date.getMonth() + 1) + '-' + date.getDate();
}
效果图:
** 数字取整 **
- 题目描述
请补全JavaScript函数,要求返回数字参数的整数部分
点击查看代码
function _int(value) {
// 补全代码
// Math.floor() 返回一个小于或等于该给定数字value的最大整数
return Math.floor(value)
}
效果图:
** 数组反转 **
- 题目描述
请补全JavaScript函数,要求将参数数组反转之后返回。
点击查看代码
function _reverse(array) {
// 补全代码
let l = 0, r=array.length - 1;
while(l++ <= r--){
[array[l], array[r]] =[array[r], array[l]];
}
return array;
}
function _reverse(array) {
// 补全代码
//创建一个新数组存放
let newArr = [];
//获取数组长度,因为数组索引从0开始,所以-1
for(let i = array.length - 1; i >= 0; i--){
//i--,从数组最后一个元素开始获取,存入新数组,达到逆转的目的
newArr.push(array[i]);
}
return newArr
}
function _reverse(array) {
return array.reverse()
}
效果图:
** 数组转字符串 **
- 题目描述
请补全JavaScript函数,要求将参数数组转换为字符串输出。
示例:
- _join([1,'2',3]) -> "123"
注意:只需考虑一维数组且数据类型为原始数据类型。
点击查看代码
function _join(array) {
// 补全代码
let str=''; //存储结果字符串
for(let i=0, len=array.length; i<len; i++) { // 循环遍历
str=str.concat(array[i]); // 逐一追加
}
return str;
}
效果图:
** 数组最大值 **
- 题目描述
请补全JavaScript函数,要求找到数组参数中的最大值并返回。
注意:数组中只包含数字。
点击查看代码
1.循环
function _max(array) {
// 补全代码
let max = array[0];
for(let i=1;i<array.length;i++) {
if(max<array[i]) {
max = array[i]
}
}
return max
}
2.先排序
function getMax(array) {
// shift会改变原数组
const newArr = array;
newArr.sort(function(a,b){
// b-a降序排序,a-b升序排序
return b-a;
})
return newArr.shift()
}
3.数组的reduce方法
function getMax(array) {
let max = array.reduce(function(max,cur){
return max=max>cur?max:cur;
})
return max;
}
4.Math.max方法
function _max(array) {
// 补全代码
// max不能接受数组作为参数
let max = Math.max(...array)
return max;
}
效果图:
** 搜索数字 **
- 题目描述
请补全JavaScript函数,要求以boolean的形式返回字符串参数中是否包含数字。
点击查看代码
function _search(string) {
// 补全代码
return string.match('\\d') ? true : false
}
String.match(regexp) —— 返回字符串匹配正则表达式的结结果
function _search(string) {
// .*匹配任意个数的字符 {1,}至少1位匹配
let regExp = new RegExp('.*[0-9]{1,}.*')
return regExp.test(string)
}
function _search(string) {
let regExp = new RegExp('\\d')
return regExp.test(string)
}
RegExp.test —— 执行一个检索,看正则表达式与字符串是否匹配,返回boolean
function _search(string) {
return Array.from(string).some(el => el > 0 && el < 9)
}
数字和字符比较时,js将字符转为数字
function _search(string) {
return Array.from(string).some(el => isNaN(el) === false)
}
Array.from —— 对一个类似数组或可迭代对象创建一个新的浅拷贝的数组实例
Array.some —— 测试数组中是否有元素通过了被提供的函数测试,返回boolean型值
isNaN —— ①是否Number类型 ②尝试转换为数值 ③判断是否NaN。非数值-true;数值-false 【不推荐isNaN,因为空字符串' '会在②转换为0,返回false。不知道为什么这测试居然能通过】
效果图:
- 题目描述
点击查看代码
效果图:
- 题目描述
点击查看代码
效果图:
- 题目描述
点击查看代码
效果图:
fy权世界