AL JS 试题

  1. 编写函数, 筛选对象, 将 key 为字母, 数字, 中文的键值对分别放置到 enKeyObjnumKeyObjcnKeyObj

          const mixObj = {
            Hello: 0,
            你: 3,
            Js: 1,
            5: 6,
            好: 4,
            7: 8,
          };
    
          function filterObject(mixObj) {
            const filteredObj = {
              enKeyObj: {},
              numKeyObj: {},
              cnKeyObj: {},
            };
    		//...请编写具体实现
            return filteredObj;
          }
    
          const { enKeyObj, numKeyObj, cnKeyObj } = filterObject(mixObj);
    
    
    

参考: 174 道 JavaScript 面试题,助你查漏补缺

  1. DOM 是什么的缩写, 请给出全称

  2. 简述 Javascript 和 ECMAScript 的关系

  3. 请给出一下代码输出结果

          var a = 1;
          function update1(a) {
            a = 2;
          }
          update1(a);
          console.log(a);
    
  4. JS 的基本数据类型

  5. 列举 3 种判断数据类型的方法, 哪个最准确 JS 判断数据类型1

  6. js 中整数的安全范围是多少?(提示: JS 内置变量, 不用给出具体数值)

  7. isNaN 和 Number.isNaN 函数的区别?

  8. 如何判断一个变量不是是数组

  9. 简述 Array.of​的作用

  10. document.getElementsByTagName("div")​ 这段代码的返回值是什么数据类型? 如何转成数组?

  11. 简述包装类型

  12. {}.toString()​ 的执行结果是什么

  13. 编写一个函数, 可以取值任意范围内的随机

          function getRandomNum(min, max) {
            if (Number.isNaN(min) || Number.isNaN(max)) {
              throw new Error("min max 需要为数字");
            }
            if (max < min || max == min) {
              throw new Error("请给出合理随机值范围");
            }
            //  实现
          }
    
  14. 给出以下代码执行结果

    let a = 5;
    
    let b = a++; 
    let c = ++a;
    
    console.log(a, b, c);
    
  15. 给出以下代码执行结果

    const a = "" || 0;
    const b = "" && 1;
    console.log(a, b);
    
  16. 给出以下代码执行结果

    const a = NaN == NaN;
    const b = undefined == null;
          console.log(a, b);
    
  17. innerHTML​ 与 outerHTML​ 的区别?

  18. .call()​ 和 .apply​() 的区别?

  19. 编写函数, 筛选对象, 将 key 为字母, 数字, 中文的键值对分别放置到 enKeyObjnumKeyObjcnKeyObj

          const mixObj = {
            Hello: 0,
            你: 3,
            Js: 1,
            5: 6,
            好: 4,
            7: 8,
          };
    
          function filterObject(mixObj) {
            const filteredObj = {
              enKeyObj: {},
              numKeyObj: {},
              cnKeyObj: {},
            };
    		//...请编写具体实现
            return filteredObj;
          }
    
          const { enKeyObj, numKeyObj, cnKeyObj } = filterObject(mixObj);
    

数组相关

  1. 遍历的数组方法有哪些(共有 10 种, 尽力给出即可)

  2. 分离出 str​ 中的数字并去重排序, 并以字符串方式输出

    const str = "Hello Js 123 你好 Js 908^*&&)(230-)1450909";
    // 期望输出结果 01234589
    
  3. 编写函数, 将下面的二维数组变为一维数组(要求: 使用 map​函数)

          const dbArr = [
            ["a", "b"],
            ["c", "d"],
            ["e", "f"],
          ];
    
          function flatArr(arr) {
            // ...编写实现
          }
          const arr = flatArr(dbArr);
          console.log(arr);
    
    1. 编写函数, 计算每个字符在字符串中出现的次数, 且去除空字符

      const a = `Nulla consequat voluptate elit elit mollit Lorem excepteur tempor laborum. 
            Ad in cillum pariatur aute voluptate Lorem aliqua tempor non nostrud ullamco cup
            之足司,秦生是吴俭的无处爱虽极此事德中春而别案,曾作动承担太治竟气也秦治,妄种好五气决对不十事承,才貂同谓,好不你血十年病但设快自。
            人五人如才二使后德县在人亓,终有未马仍清实,流决予而活看恶他作,卑后千没说郭你最国杀也领,丈用没用若和斯的于土往生生即君之,有谭定弄之人
            无不好的文我今清行到,在太要我可位位,高招者不才之非要上一惜天到尺韩有,变言之若天张韩远千求她负徨那付,人为范,低竟投。
            idatat velit aute. Sit sit consequat eiusmod sit laboris duis. Aliqua consectetur deserunt consectetur amet ipsum duis quis magna do velit velit.`;
      
  4. 将以下数组转换城树形数据

          const cars = [
            // 吉利车型
            { mode: "银河E8", brand: "Geely", subBrand: "Galaxy" },
            { mode: "银河L6", brand: "Geely", subBrand: "Galaxy" },
            { mode: "几何A", brand: "Geely", subBrand: "Galaxy" },
            { mode: "帝豪EC8", brand: "Geely", subBrand: "Emgrand" },
            { mode: "帝豪GL", brand: "Geely", subBrand: "Emgrand" },
            { mode: "博瑞", brand: "Geely", subBrand: "Borui" },
            { mode: "远景", brand: "Geely", subBrand: "Yuanjing" },
    
            // 比亚迪车型
            { mode: "海豹", brand: "BYD", subBrand: "Ocean" },
            { mode: "海豚", brand: "BYD", subBrand: "Ocean" },
            { mode: "唐EV", brand: "BYD", subBrand: "Tang" },
            { mode: "汉EV", brand: "BYD", subBrand: "Han" },
            { mode: "秦PLUS EV", brand: "BYD", subBrand: "Qin" },
            { mode: "元PLUS", brand: "BYD", subBrand: "Yuan" },
    
            // 特斯拉车型
            { mode: "Model 3", brand: "Tesla", subBrand: "Original" },
            { mode: "Model S", brand: "Tesla", subBrand: "Original" },
            { mode: "Model X", brand: "Tesla", subBrand: "Original" },
            { mode: "Model Y", brand: "Tesla", subBrand: "Original" },
          ];
    

    目标数据结果

          const carTree = {
            Geely: {
              Galaxy: ["银河E8", "银河L6", "几何A"],
              Emgrand: ["帝豪EC8", "帝豪GL"],
              Borui: ["博瑞"],
              Yuanjing: ["远景"],
            },
            BYD: {
              Ocean: ["海豹", "海豚"],
              Tang: ["唐EV"],
              Han: ["汉EV"],
              Qin: ["秦PLUS EV"],
              Yuan: ["元PLUS"],
            },
            Tesla: {
              Original: ["Model 3", "Model S", "Model X", "Model Y"],
            },
          };
    
  5. 如何快速清空一个数组

          const arr = ["b", "b", "c"];
    
          //... 一行代码
    
          console.log("输出结果:", arr); // 输出结果: []
    
  6. 求数组交集

          var numOne = [0, 2, 4, 6, 8, 8];
          var numTwo = [1, 2, 3, 4, 5, 6];
    
          function getIntersection(arr1, arr2) {
            // ...实现
          }
    
          console.log(getIntersection(numOne, numTwo)); // [2, 4, 6]
    


  1. JS 判断数据类型

    在 JavaScript 中,判断数据类型的方法有多种,每种方法适用于不同的场景。以下是一些常用的方法及其特点:

    1. typeof

    • 用法typeof​ 是一个操作符,用于返回变量的数据类型。

    • 返回值:返回一个字符串,表示数据类型。

    • 限制

      • 对于基本类型(如 number​、string​、boolean​、undefined​),返回正确的类型。
      • 对于 null​ 和数组,均返回 "object"​。
      • 对于函数,返回 "function"​。
    console.log(typeof 123); // "number"
    console.log(typeof "hello"); // "string"
    console.log(typeof null); // "object"
    console.log(typeof []); // "object"
    console.log(typeof function(){}); // "function"
    

    2. instanceof

    • 用法instanceof​ 用于检查一个对象是否是某个构造函数的实例。
    • 适用范围:主要用于引用类型的判断,如数组和对象。
    • 限制:不能用于基本数据类型。
    console.log([] instanceof Array); // true
    console.log({} instanceof Object); // true
    console.log(null instanceof Object); // false
    

    3. Object.prototype.toString.call()

    • 用法:通过调用 Object.prototype.toString.call()​ 方法,可以准确判断数据类型。
    • 返回值:返回格式为 [object Type]​ 的字符串,其中 Type​ 是具体的数据类型。
    • 优点:能够区分所有数据类型,包括数组和 null​。
    console.log(Object.prototype.toString.call(123)); // "[object Number]"
    console.log(Object.prototype.toString.call([])); // "[object Array]"
    console.log(Object.prototype.toString.call(null)); // "[object Null]"
    

    4. constructor 属性

    • 用法:通过对象的 constructor​ 属性可以判断其构造函数。
    • 限制:对于 null​ 和 undefined​ 没有 constructor​ 属性。
    console.log((123).constructor === Number); // true
    console.log([1, 2, 3].constructor === Array); // true
    

    5. Array.isArray()

    • 用法:专门用于判断一个值是否为数组。
    • 返回值:如果是数组则返回 true​,否则返回 false​。
    console.log(Array.isArray([1, 2, 3])); // true
    console.log(Array.isArray({})); // false
    

    总结

    在 JavaScript 中,选择合适的方法来判断数据类型非常重要。对于简单的基本数据类型,可以使用 typeof​;而对于复杂的数据结构,尤其是需要区分数组和对象时,使用 Object.prototype.toString.call()​ 是更为可靠的方法。结合这些方法,可以实现一个全面的数据类型判断函数,以满足不同的需求。

    Citations:
    [1] https://segmentfault.com/a/1190000018160547
    [2] https://juejin.cn/post/7200396667505704997
    [3] https://blog.csdn.net/Clara_G/article/details/104755965
    [4] https://juejin.cn/post/7000300249235357709
    [5] https://www.cnblogs.com/onepixel/p/5126046.html
    [6] https://segmentfault.com/a/1190000015264821

  • JavaScript

    JavaScript 一种动态类型、弱类型、基于原型的直译式脚本语言,内置支持类型。它的解释器被称为 JavaScript 引擎,为浏览器的一部分,广泛用于客户端的脚本语言,最早是在 HTML 网页上使用,用来给 HTML 网页增加动态功能。

    728 引用 • 1273 回帖 • 1 关注

相关帖子

回帖

欢迎来到这里!

我们正在构建一个小众社区,大家在这里相互信任,以平等 • 自由 • 奔放的价值观进行分享交流。最终,希望大家能够找到与自己志同道合的伙伴,共同成长。

注册 关于
请输入回帖内容 ...

推荐标签 标签

  • WordPress

    WordPress 是一个使用 PHP 语言开发的博客平台,用户可以在支持 PHP 和 MySQL 数据库的服务器上架设自己的博客。也可以把 WordPress 当作一个内容管理系统(CMS)来使用。WordPress 是一个免费的开源项目,在 GNU 通用公共许可证(GPLv2)下授权发布。

    66 引用 • 114 回帖 • 225 关注
  • DevOps

    DevOps(Development 和 Operations 的组合词)是一组过程、方法与系统的统称,用于促进开发(应用程序/软件工程)、技术运营和质量保障(QA)部门之间的沟通、协作与整合。

    51 引用 • 25 回帖 • 2 关注
  • Java

    Java 是一种可以撰写跨平台应用软件的面向对象的程序设计语言,是由 Sun Microsystems 公司于 1995 年 5 月推出的。Java 技术具有卓越的通用性、高效性、平台移植性和安全性。

    3189 引用 • 8214 回帖 • 3 关注
  • Quicker

    Quicker 您的指尖工具箱!操作更少,收获更多!

    34 引用 • 148 回帖
  • Facebook

    Facebook 是一个联系朋友的社交工具。大家可以通过它和朋友、同事、同学以及周围的人保持互动交流,分享无限上传的图片,发布链接和视频,更可以增进对朋友的了解。

    4 引用 • 15 回帖 • 439 关注
  • 以太坊

    以太坊(Ethereum)并不是一个机构,而是一款能够在区块链上实现智能合约、开源的底层系统。以太坊是一个平台和一种编程语言 Solidity,使开发人员能够建立和发布下一代去中心化应用。 以太坊可以用来编程、分散、担保和交易任何事物:投票、域名、金融交易所、众筹、公司管理、合同和知识产权等等。

    34 引用 • 367 回帖
  • 游戏

    沉迷游戏伤身,强撸灰飞烟灭。

    177 引用 • 816 回帖
  • 链滴

    链滴是一个记录生活的地方。

    记录生活,连接点滴

    156 引用 • 3792 回帖 • 1 关注
  • Git

    Git 是 Linux Torvalds 为了帮助管理 Linux 内核开发而开发的一个开放源码的版本控制软件。

    209 引用 • 358 回帖
  • CentOS

    CentOS(Community Enterprise Operating System)是 Linux 发行版之一,它是来自于 Red Hat Enterprise Linux 依照开放源代码规定释出的源代码所编译而成。由于出自同样的源代码,因此有些要求高度稳定的服务器以 CentOS 替代商业版的 Red Hat Enterprise Linux 使用。两者的不同在于 CentOS 并不包含封闭源代码软件。

    238 引用 • 224 回帖
  • 职场

    找到自己的位置,萌新烦恼少。

    127 引用 • 1706 回帖
  • RYMCU

    RYMCU 致力于打造一个即严谨又活泼、专业又不失有趣,为数百万人服务的开源嵌入式知识学习交流平台。

    4 引用 • 6 回帖 • 53 关注
  • Kotlin

    Kotlin 是一种在 Java 虚拟机上运行的静态类型编程语言,由 JetBrains 设计开发并开源。Kotlin 可以编译成 Java 字节码,也可以编译成 JavaScript,方便在没有 JVM 的设备上运行。在 Google I/O 2017 中,Google 宣布 Kotlin 成为 Android 官方开发语言。

    19 引用 • 33 回帖 • 63 关注
  • Mobi.css

    Mobi.css is a lightweight, flexible CSS framework that focus on mobile.

    1 引用 • 6 回帖 • 744 关注
  • 旅游

    希望你我能在旅途中找到人生的下一站。

    92 引用 • 899 回帖
  • Gitea

    Gitea 是一个开源社区驱动的轻量级代码托管解决方案,后端采用 Go 编写,采用 MIT 许可证。

    4 引用 • 16 回帖
  • Google

    Google(Google Inc.,NASDAQ:GOOG)是一家美国上市公司(公有股份公司),于 1998 年 9 月 7 日以私有股份公司的形式创立,设计并管理一个互联网搜索引擎。Google 公司的总部称作“Googleplex”,它位于加利福尼亚山景城。Google 目前被公认为是全球规模最大的搜索引擎,它提供了简单易用的免费服务。不作恶(Don't be evil)是谷歌公司的一项非正式的公司口号。

    49 引用 • 192 回帖
  • jQuery

    jQuery 是一套跨浏览器的 JavaScript 库,强化 HTML 与 JavaScript 之间的操作。由 John Resig 在 2006 年 1 月的 BarCamp NYC 上释出第一个版本。全球约有 28% 的网站使用 jQuery,是非常受欢迎的 JavaScript 库。

    63 引用 • 134 回帖 • 724 关注
  • danl
    144 关注
  • IBM

    IBM(国际商业机器公司)或万国商业机器公司,简称 IBM(International Business Machines Corporation),总公司在纽约州阿蒙克市。1911 年托马斯·沃森创立于美国,是全球最大的信息技术和业务解决方案公司,拥有全球雇员 30 多万人,业务遍及 160 多个国家和地区。

    17 引用 • 53 回帖 • 141 关注
  • 链书

    链书(Chainbook)是 B3log 开源社区提供的区块链纸质书交易平台,通过 B3T 实现共享激励与价值链。可将你的闲置书籍上架到链书,我们共同构建这个全新的交易平台,让闲置书籍继续发挥它的价值。

    链书社

    链书目前已经下线,也许以后还有计划重制上线。

    14 引用 • 257 回帖
  • GitHub

    GitHub 于 2008 年上线,目前,除了 Git 代码仓库托管及基本的 Web 管理界面以外,还提供了订阅、讨论组、文本渲染、在线文件编辑器、协作图谱(报表)、代码片段分享(Gist)等功能。正因为这些功能所提供的便利,又经过长期的积累,GitHub 的用户活跃度很高,在开源世界里享有深远的声望,并形成了社交化编程文化(Social Coding)。

    209 引用 • 2031 回帖
  • 外包

    有空闲时间是接外包好呢还是学习好呢?

    26 引用 • 232 回帖
  • golang

    Go 语言是 Google 推出的一种全新的编程语言,可以在不损失应用程序性能的情况下降低代码的复杂性。谷歌首席软件工程师罗布派克(Rob Pike)说:我们之所以开发 Go,是因为过去 10 多年间软件开发的难度令人沮丧。Go 是谷歌 2009 发布的第二款编程语言。

    497 引用 • 1388 回帖 • 278 关注
  • 大疆创新

    深圳市大疆创新科技有限公司(DJI-Innovations,简称 DJI),成立于 2006 年,是全球领先的无人飞行器控制系统及无人机解决方案的研发和生产商,客户遍布全球 100 多个国家。通过持续的创新,大疆致力于为无人机工业、行业用户以及专业航拍应用提供性能最强、体验最佳的革命性智能飞控产品和解决方案。

    2 引用 • 14 回帖
  • 开源

    Open Source, Open Mind, Open Sight, Open Future!

    407 引用 • 3578 回帖
  • 生活

    生活是指人类生存过程中的各项活动的总和,范畴较广,一般指为幸福的意义而存在。生活实际上是对人生的一种诠释。生活包括人类在社会中与自己息息相关的日常活动和心理影射。

    230 引用 • 1454 回帖 • 1 关注