前端面试笔试题目-JS专项练习(基础)(下)

简介: 前端面试笔试题目-JS专项练习(基础)(下)

20、返回星期数(switch)


请补全JavaScript函数,要求以字符串的形式返回数字参数所对应的星期。


function _getday(value) {
    // 补全代码
    switch(value){
        case 1:
            return '星期一'
        case 2:
            return '星期二'
        case 3:
            return '星期三'
        case 4:
            return '星期四'
        case 5:
            return '星期五'
        case 6:
            return '星期六'
        case 7:
            return '星期天'
    }
}


21、从大到小排序(冒泡排序法)


  • 请补全JavaScript函数,要求将数组参数中的数字从大到小进行排序并返回


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


22、大写字符串(toUpperCase)


  • 请补全JavaScript函数,要求将字符串参数转换为大写字符串并返回


function _touppercase(string) {
    // 补全代码
    return string.toUpperCase();
}


23、获取对象属性键名(Object.keys)


  • 请补全JavaScript函数,要求以数组的形式输出对象各个属性的键名。
    示例: _keys({name:‘nowcoder’,age:7}) -> [‘name’,‘age’]
function _keys(object) {
    // 补全代码
    return Object.keys(object)
}

24、数据类型转为对象(new Number())


  • 请补全JavaScript函数,要求将数字参数转换为对象的形式返回


function _numbertoobject(number) {
    // 补全代码
    return new Number(number)
}


25、=====的区别


  • 当进行==比较时候: 先检查两个操作数数据类型,如果相同, 则进行===比较, 如果不同, 则愿意为你进行一次类型转换,转换成相同类型后再进行比较
  • 而===比较时, 如果类型不同,直接就是false.
<script>
  console.log(1 == [1])       //  true
  console.log(1 === [1])      //  false
  console.log(1 == true)      //  true
  console.log(1 === true)     //  false
  console.log(1 == '1')       //  true
  console.log(1 === '1')      //  false
</script>

26、或运算(||)


  • 返回参数 a 和 b 的逻辑或运算结果


function or(a, b) {
    return a||b;
}


27、且运算(&&)


  • 返回参数 a 和 b 的逻辑且运算结果


function and(a, b) {
    return a&&b;
}


28、字符串字符统计


  • 统计字符串中每个字符的出现频率,返回一个 Object,key 为统计字符,value 为出现频率
  • 不限制 key 的顺序
  • 输入的字符串参数不会为空
  • 忽略空白字符


//for循环
function count(str) {
    var obj={};
    for(let i=0;i<str.length;i++){
        if(str[i]!=''){
            obj[str[i]]=obj[str[i]]?++obj[str[i]]:1;
        }
    }
    return obj;
}
/*
'hello world'
{h: 1, e: 1, l: 3, o: 2, w: 1, r: 1, d: 1}
*/


29、去除字符串两端空格


  • 请补全JavaScript函数,要求去除参数字符串两端的空格并返回


//trim
function _trim(string) {
    // 补全代码
    return string.trim();
}
//split
function _trim(string) {
    // 补全代码
    var arr=string.split('');
    arr.pop();
    arr.shift();
    return arr.join('')
}


总结:


方法 作用
trim() 去除字符串的头尾空格
split() 把一个字符串分割成字符串数组
join() 把字符串数组变成字符串
pop() 去掉数组最后一个元素
shift() 去掉数组第一个元素



30、输出日期(Date)


  • 请补全JavaScript函数,要求以字符串的形式输出时间戳参数所对应的"年-月-日"。 示例: _date(1631159776311) -> ‘2021-9-9’
function _date(number) {
    // 补全代码
    let date=new Date(number);
    return date.getFullYear()+'-'+(date.getMonth()+1)+'-'+date.getDate();
    //return `${date.getFullYear()}-${date.getMonth()+1}-${date.getDate()}`
}

31、数字取整(parseInt)


  • 请补全JavaScript函数,要求返回数字参数的整数部分


function _int(value) {
    // 补全代码
    return parseInt(value);
    //return Math.floor(value)
}


31、数组反转(reverse)


  • 请补全JavaScript函数,要求将参数数组反转之后返回


//for循环
function _reverse(array) {
    // 补全代码
    var arr1=[];
    for(let i=array.length-1;i>=0;i--){
        arr1.push(array[i]);
    }
    return arr1;
}
//reverse数组反转
function _reverse(array) {
    // 补全代码
    return array.reverse();
}


32、数组转字符串(join)


  • 请补全JavaScript函数,要求将参数数组转换为字符串输出。
  • 示例:_join([1,‘2’,3]) -> “123” 注意:只需考虑一维数组且数据类型为原始数据类型。
function _join(array) {
    // 补全代码
    return array.join('');
}

33、数组最大值


  • 请补全JavaScript函数,要求找到数组参数中的最大值并返回。
//Math.max()
function _max(array) {
    // 补全代码
    return Math.max(...array);
}
function _max(array) {
    // 补全代码
    var max=array[0];
    for(let i=0;i<array.length;i++){
        max=max<array[i]?array[i]:max;
    }
    return max;
}
//for
function _max(array) {
    // 补全代码
    let max = 1;
    for(let i = 0;i < array.length;i++){
        if(max < array[i]){
            max = array[i];
        }
    }
    return max;
}

34、搜索数字


  • 请补全JavaScript函数,要求以boolean的形式返回字符串参数中是否包含数字
function _search(string) {
    // 补全代码
    var arr=string.split('');
    for(value of arr){
        if (typeof(value === 'number')){
            return true;
        }else{
            return false;
        }
    }
}

35、头部插入元素(unshifit)


  • 请补全JavaScript函数,要求将第二个参数插入第一个参数数组的头部,并且以数组的形式返回。
function _unshift(array,value) {
    // 补全代码
    return array.unshift(value);
}

36、尾部插入元素(push)


  • 请补全JavaScript函数,要求将第二个参数插入第一个参数数组的尾部,并且以数组的形式返回


function _push(array,value) {
    // 补全代码
    return array.push(value);
}


37、js-位置查找(indexof)


  • 请补全JavaScript函数,要求以数字的形式返回第一个参数数组中第二个参数所在的首个索引值。注意:如果数组中不存在目标值,则返回-1。
//indexof
function _indexof(array,value) {
    // 补全代码
    return array.indexof(value);
}
//for
function _indexof(array,value) {
    // 补全代码
    var index=-1;
    for(let i=0;i<array.length;i++){
        if(array[i]===value){
            index=i;
            break;
        }
    }
    return index;
}

38、向下取整(Math.floor)


  • 请补全JavaScript函数,要求以数字的形式返回数字参数向下取整的结果


function _floor(number) {
    // 补全代码
    return Math.floor(number);
}


39、整数反转(parseInt)


  • 请补全JavaScript函数,要求将整数参数反转之后输出


function _reverse(number) {
    // 补全代码
    var arr=number.toString().split('');//字符串变数组
    arr.reverse();//数组反转
    number=arr.join('');//数组变字符串
    return parseInt(number);//字符串变数字
}


40、字符串搜索(search)


  • 请补全JavaScript函数,要求以boolean的形式返回字符串首参中是否包含第二个参数


function _search(string,value) {
    // 补全代码
    return Boolean(string.search(value));
    //return string.indexOf(value)==-1?false:true;
}


41、函数——参数对象


  • 请补全JavaScript函数,要求返回它的参数伪数组对象


function getArguments (a,b,c) {
    // 补充代码
    return arguments;
}


42、this指向


  • 请补全JavaScript函数,使obj对象中fn函数返回该对象中a属性和b属性的和


var obj = {
    a: 1,
    b: 2,
    fn: function(){
        // 补全代码
        return this.a+this.b;
        //return obj.a+obj.b;
    }
}


43、JS修改元素内容(innerHTML)


  • 请补全JavaScript函数,将类为"box"的div元素内容修改为"欢迎来到牛客网"
  • getElementsByClassName()
  • querySelector()


<html>
    <head>
        <meta charset=utf-8>
    </head>
    <body>
        <div class='box'></div>
    </body>
    <script type="text/javascript">
        function modifyText(){
            //  getElementsByClassName()
            var box=document.getElementsByClassName('box')[0];
            box.innerHTML='欢迎来到牛客网';
        }
             // querySelector()
            var box=document.querySelector('.box');
            box.innerHTML='欢迎来到牛客网';
        }
    </script>
</html>

44、防止冒泡事件(stopPropagation)


  • 请补全JavaScript函数,要求在点击li元素的时候不触发ul的事件。
  • 注意:需要自行获取li元素。
<html>
    <head>
        <meta charset=utf-8>
    </head>
    <body>
        <ul>
            <li>nowcoder</li>
        </ul>
    </body>
    <script type="text/javascript">
        // 补全代码
        var li=document.querySelector('li');
        li.addEventListener('click',function(e){
            e.stopPropagation();
        })
    </script>
</html>

阻止默认事件


  • 请补全JavaScript函数,要求在点击id为"checkbox"的复选框时不会取消勾选状态。
  • 注意:需要自行获取input元素。
<html>
    <head>
        <meta charset=utf-8>
    </head>
    <body>
        <form>
            <label>牛客会陪伴大家</label>
            <input id="checkbox" type="checkbox" checked />
        </form>
    </body>
    <script type="text/javascript">
        // 补全代码
        let input=document.getElementsByTagName('input')[0];
        input.onclick=function(){
            input.checked=true;
        }
        // 补全代码
        let input=document.getElementsByTagName('input')[0];
        input.onclick=function(e){
            e.preventDefault();
        }
    </script>
</html>


相关文章
|
3月前
|
JavaScript 前端开发 程序员
前端原生Js批量修改页面元素属性的2个方法
原生 Js 的 getElementsByClassName 和 querySelectorAll 都能获取批量的页面元素,但是它们之间有些细微的差别,稍不注意,就很容易弄错!
|
1天前
|
自然语言处理 JavaScript 前端开发
当面试官再问我JS闭包时,我能答出来的都在这里了。
闭包(Closure)是前端面试中的高频考点,广泛应用于函数式编程中。它不仅指函数内部定义的函数,还涉及内存管理、作用域链和垃圾回收机制。闭包可以让函数访问其外部作用域的变量,但也可能引发内存泄漏等问题。通过合理使用闭包,可以实现模块化、高阶函数和回调函数等应用场景。然而,滥用闭包可能导致代码复杂度增加、调试困难以及潜在的性能问题。为了避免这些问题,开发时应谨慎处理闭包,避免不必要的嵌套,并及时清理不再使用的变量和监听器。
当面试官再问我JS闭包时,我能答出来的都在这里了。
|
6天前
|
前端开发
【2025优雅草开源计划进行中01】-针对web前端开发初学者使用-优雅草科技官网-纯静态页面html+css+JavaScript可直接下载使用-开源-首页为优雅草吴银满工程师原创-优雅草卓伊凡发布
【2025优雅草开源计划进行中01】-针对web前端开发初学者使用-优雅草科技官网-纯静态页面html+css+JavaScript可直接下载使用-开源-首页为优雅草吴银满工程师原创-优雅草卓伊凡发布
25 1
【2025优雅草开源计划进行中01】-针对web前端开发初学者使用-优雅草科技官网-纯静态页面html+css+JavaScript可直接下载使用-开源-首页为优雅草吴银满工程师原创-优雅草卓伊凡发布
|
3月前
|
JavaScript 前端开发 Java
springboot解决js前端跨域问题,javascript跨域问题解决
本文介绍了如何在Spring Boot项目中编写Filter过滤器以处理跨域问题,并通过一个示例展示了使用JavaScript进行跨域请求的方法。首先,在Spring Boot应用中添加一个实现了`Filter`接口的类,设置响应头允许所有来源的跨域请求。接着,通过一个简单的HTML页面和jQuery发送AJAX请求到指定URL,验证跨域请求是否成功。文中还提供了请求成功的响应数据样例及请求效果截图。
springboot解决js前端跨域问题,javascript跨域问题解决
|
3月前
|
JSON JavaScript 前端开发
[JS]面试官:你的简历上写着熟悉jsonp,那你说说它的底层逻辑是怎样的?
本文介绍了JSONP的工作原理及其在解决跨域请求中的应用。首先解释了同源策略的概念,然后通过多个示例详细阐述了JSONP如何通过动态解释服务端返回的JavaScript脚本来实现跨域数据交互。文章还探讨了使用jQuery的`$.ajax`方法封装JSONP请求的方式,并提供了具体的代码示例。最后,通过一个更复杂的示例展示了如何处理JSON格式的响应数据。
57 2
[JS]面试官:你的简历上写着熟悉jsonp,那你说说它的底层逻辑是怎样的?
|
3月前
|
缓存 JavaScript 前端开发
JavaScript 与 DOM 交互的基础及进阶技巧,涵盖 DOM 获取、修改、创建、删除元素的方法,事件处理,性能优化及与其他前端技术的结合,助你构建动态交互的网页应用
本文深入讲解了 JavaScript 与 DOM 交互的基础及进阶技巧,涵盖 DOM 获取、修改、创建、删除元素的方法,事件处理,性能优化及与其他前端技术的结合,助你构建动态交互的网页应用。
87 5
|
3月前
|
缓存 前端开发 JavaScript
JavaScript前端路由的实现原理及其在单页应用中的重要性,涵盖前端路由概念、基本原理、常见实现方式
本文深入解析了JavaScript前端路由的实现原理及其在单页应用中的重要性,涵盖前端路由概念、基本原理、常见实现方式(Hash路由和History路由)、优点及挑战,并通过实际案例分析,帮助开发者更好地理解和应用这一关键技术,提升用户体验。
124 1
|
3月前
|
JSON 前端开发 JavaScript
聊聊 Go 语言中的 JSON 序列化与 js 前端交互类型失真问题
在Web开发中,后端与前端的数据交换常使用JSON格式,但JavaScript的数字类型仅能安全处理-2^53到2^53间的整数,超出此范围会导致精度丢失。本文通过Go语言的`encoding/json`包,介绍如何通过将大整数以字符串形式序列化和反序列化,有效解决这一问题,确保前后端数据交换的准确性。
74 4
|
3月前
|
机器学习/深度学习 自然语言处理 前端开发
前端神经网络入门:Brain.js - 详细介绍和对比不同的实现 - CNN、RNN、DNN、FFNN -无需准备环境打开浏览器即可测试运行-支持WebGPU加速
本文介绍了如何使用 JavaScript 神经网络库 **Brain.js** 实现不同类型的神经网络,包括前馈神经网络(FFNN)、深度神经网络(DNN)和循环神经网络(RNN)。通过简单的示例和代码,帮助前端开发者快速入门并理解神经网络的基本概念。文章还对比了各类神经网络的特点和适用场景,并简要介绍了卷积神经网络(CNN)的替代方案。
597 1
|
3月前
|
JavaScript 前端开发 开发者
前端框架对比:Vue.js与Angular的优劣分析与选择建议
【10月更文挑战第27天】在前端开发领域,Vue.js和Angular是两个备受瞩目的框架。本文对比了两者的优劣,Vue.js以轻量级和易上手著称,适合快速开发小型到中型项目;Angular则由Google支持,功能全面,适合大型企业级应用。选择时需考虑项目需求、团队熟悉度和长期维护等因素。
98 1

热门文章

最新文章

  • 1
    【Java若依框架】RuoYi-Vue的前端和后端配置步骤和启动步骤
  • 2
    【11】flutter进行了聊天页面的开发-增加了即时通讯聊天的整体页面和组件-切换-朋友-陌生人-vip开通详细页面-即时通讯sdk准备-直播sdk准备-即时通讯有无UI集成的区别介绍-开发完整的社交APP-前端客户端开发+数据联调|以优雅草商业项目为例做开发-flutter开发-全流程-商业应用级实战开发-优雅草Alex
  • 3
    【05】flutter完成注册页面完善样式bug-增加自定义可复用组件widgets-严格规划文件和目录结构-规范入口文件-开发完整的社交APP-前端客户端开发+数据联调|以优雅草商业项目为例做开发-flutter开发-全流程-商业应用级实战开发-优雅草央千澈
  • 4
    【08】flutter完成屏幕适配-重建Android,增加GetX路由,屏幕适配,基础导航栏-多版本SDK以及gradle造成的关于fvm的使用(flutter version manage)-卓伊凡换人优雅草Alex-开发完整的社交APP-前端客户端开发+数据联调|以优雅草商业项目为例做开发-flutter开发-全流程-商业应用级实战开发-优雅草Alex
  • 5
    详解智能编码在前端研发的创新应用
  • 6
    巧用通义灵码,提升前端研发效率
  • 7
    【07】flutter完成主页-完成底部菜单栏并且做自定义组件-完整短视频仿抖音上下滑动页面-开发完整的社交APP-前端客户端开发+数据联调|以优雅草商业项目为例做开发-flutter开发-全流程-商业应用级实战开发-优雅草央千澈
  • 8
    智能编码在前端研发的创新应用
  • 9
    【04】flutter补打包流程的签名过程-APP安卓调试配置-结构化项目目录-完善注册相关页面-开发完整的社交APP-前端客户端开发+数据联调|以优雅草商业项目为例做开发-flutter开发-全流程
  • 10
    抛弃node和vscode,如何用记事本开发出一个完整的vue前端项目