Js常用面试题目知识整理

2023-11-12

Js代码题

1. 千分位

题目:要求返回参数数字的千分位分隔符字符串。

思路:
在字符串长度不确定的情况下,可以使用递归。
_comma(number % 1000) 是获取数字最后三位,将其放在返回值的最后面,并且在前面加一个逗号
_comma(Math.floor(number / 1000)) 是将剩下的部分传入函数本身
不断重复,直到入参的number小于1000,返回 number.toString(),函数最后返回一个完整的千位分隔符的字符串。

 function _comma(number) {
                // 补全代码
                if(number<1000){
                    return number.toString();
                }else{
                    return _comma(Math.floor(number/1000))+","+_comma(number%1000)
                }
    
            }

PS: 有个bug:如果number为123456789012,会输出123,456,789,12

完善版:


function _comma(number){
    // 补全代码
    let zf=false;
    if(number<0){
        zf = true;
    }
    number = Math.abs(number)
    number = number.toString().split('');
    let n = number.length;
    for(let i=n-3;i>0;i-=3){
        number.splice(i,0,',');
    }
    if(zf) number.unshift('-');
    return number.join('');
}
console.log(f(123456789012));

知识扩展:

Math.floor()、Math.round()、Math.ceil()

下取整: Math.floor()
四舍五入:Math.round()
上取整: Math.ceil()

reverse join split splice 用法

参考这位博主总结

2. 创建数组

返回一个长度为参数值并且每一项值都为参数值的数组

通过new Array()函数构造实例的时候带入参数,可以生成该参数长度的空数组
通过Array.fill()函数可以将数组的每一项都改编为参数值

    <script type="text/javascript">
         const _createArray = (number) => {
             // 补全代码
             return Array(number).fill(number);
             
         }
     </script>

3. JS获取扩展名

  • String 中split()方法
function getFileExtension(filename) {
  return filename.split(".").pop()
}
function getFileExtension(filename) {
  return filename.slice((filename.lastIndexOf(".") - 1 >>> 0) + 2)
}
  • 正则
function getFileExtension1(filename) {
  return /[.]/.exec(filename) ? /[^.]+$/.exec(filename)[0] : undefined
}

这里的/[.]/.exec(filename)是用来判断.是否存在,如果不存在的话,其值为null;
/[^.]+$/.exec(filename)[0]拿到从.开始匹配的字符串,也就是扩展名。如果不存在则返回undefined。

4. 最长公共前缀

给你一个大小为 n 的字符串数组 strs ,其中包含n个字符串 , 编写一个函数来查找字符串数组中的最长公共前缀,返回这个公共前缀。

数据范围: 0≤n≤50000 \le n \le 5000 0≤n≤5000, 0≤len(strsi)≤50000 \le len(strs_i) \le 5000 0≤len(strsi​)≤5000
进阶:空间复杂度 O(n)O(n)O(n),时间复杂度 O(n)O(n)O(n)

/**
  *
  * @param strs string字符串一维数组
  * @return string字符串
  */
function longestCommonPrefix( strs ) {
    // write code here
    if(strs.length==0) return "";
    let s = "";//标准
    for(let i=0;i<strs[0].length;i++){
        let j=0;
        while(j<strs.length-1){
            if(strs[j][i]===strs[j+1][i]){
                j++;
            }else{
                return s;
            }
        }
         s += strs[0][i];
    }
    return strs[0];
}

5.ip地址

编写一个函数来验证输入的字符串是否是有效的 IPv4 或 IPv6 地址
IPv4 地址由十进制数和点来表示,每个地址包含4个十进制数,其范围为 0 - 255, 用(“.”)分割。比如,172.16.254.1;
同时,IPv4 地址内的数不会以 0 开头。比如,地址 172.16.254.01 是不合法的。
IPv6 地址由8组16进制的数字来表示,每组表示 16 比特。这些组数字通过 (“:”)分割。比如, 2001:0db8:85a3:0000:0000:8a2e:0370:7334 是一个有效的地址。而且,我们可以加入一些以 0 开头的数字,字母可以使用大写,也可以是小写。所以, 2001:db8:85a3:0:0:8A2E:0370:7334 也是一个有效的 IPv6 address地址 (即,忽略 0 开头,忽略大小写)。

然而,我们不能因为某个组的值为 0,而使用一个空的组,以至于出现 (:

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Js常用面试题目知识整理 的相关文章

随机推荐

  • Markdown笔记:写数学公式方法

    Markdown笔记 写数学公式方法 这里简单记录一下在markdown中书写数学公式的方法 就像Stackoverflow上的经常有的挺漂亮的公式 其生成的不是图片 而MathJax引擎 在Markdown中添加MathJax引擎也很简单
  • vue项目如何运行(超详图解)

    vue项目如何运行 超详图解 1 查看node npm版本 打开cmd 输入npm v 查看npm版本 输入node v 查看node版本 若出现类似下图显示 即为安装成功 2 删除删除package lock json和node modu
  • 什么是Qt信号槽机制

    1 信号和槽概述 信号槽是 Qt 框架引以为豪的机制之一 所谓信号槽 实际就是观察者模式 发布 订阅模式 当某个 事件 发生之后 比如 按钮检测到自己被点击了一下 它就会发出一个信号 signal 这种发出是没有目的的 类似广播 如果有对象
  • React Hooks--与传统react写法比较

    React Hooks 简介 2018年底FaceBook的React小组推出Hooks以来 所有的React的开发者都对它大为赞赏 React Hooks就是用函数的形式代替原来的继承类的形式 并且使用预函数的形式管理state 有Hoo
  • oracle按照首汉字首字母排序

    按照拼音顺序 ORDER BY nlssort NAME NLS SORT SCHINESE PINYIN M 按照部首顺序 ORDER BY nlssort NAME NLS SORT SCHINESE RADICAL M 按照笔画顺序
  • websocket实现聊天室(一)

    最近接到一个聊天室的任务 之前在学校完全没有接触过这方面的需求 在网上查找资料后 基本确定了实现方案 现在就开始着手学习 在此记录一下遇到的问题 初识websocket 在简单了解websocket后 我觉得与http请求类似 不过webs
  • 读取g2o 文件的python实现

    可以读取2D 和 3D的 g2o 文件 并可以把四元数的位姿转换为节点和边数据 import argparse import numpy as np import pyquaternion File Format Vertex 2D Rob
  • H.264 标准简介

    JVT Joint Video Team 视频联合工作组 于2001年12月在泰国Pattaya成立 它由ITU T和ISO两个国际标准化组织的有关视频编码的专家联合组成 JVT的工作目标是制定一个新的视频编码标准 以实现视频的高压缩比 高
  • Visual Studio编译出来的程序无法在其它电脑上运行

    在其它电脑 比如Windows Server 2012 上运行Visual Studio编译出来的应用程序 结果报错 无法启动此程序 因为计算机中丢失VCRUNTIME140 dll 尝试重新安装该程序以解决此问题 解决方法 属性 gt 配
  • PNP和NPN磁感应开关有什么区别

    1 我们以磁性开关为例 先要搞清楚PNP NPN 表示的意思是什么 P表示正 N表示负 PNP表示平时为高电位 信号到来时信号为负 NPN表示平时为低电位 信号到来时信号为高电位输出 接近开关和光电开关只是检测电路不同输出相同 至于PLC接
  • Spring 提示:无法找到元素 'aop:aspectj-autoproxy'

    问题描述 org springframework beans factory xml XmlBeanDefinitionStoreException Line 18 in XML document from class path resou
  • 程序员从初级到中级10个秘诀

    新闻来源 techrepublic comJustin James曾发表过一篇博文 10 tips for advancing from a beginner to an intermediate developer 为我们分享如何才能完成
  • syskey (win7启动密码)加密和破解方法

    1 什么是syskey Syskey是NT Service Pack 3中带的一个工具 用来保护SAM数据库不被离线破解 用过去的加密机制 如果攻击者能够得到一份加密过的SAM库的拷贝 他就能够在自己的机器上来破解用户口令 2 如何开启sy
  • [Json依赖] JSONObject的依赖包

  • Windos10专业版开启远程桌面协助

    我需要控制局域网的电脑 这台电脑是win10专业版 搜索 远程桌面设置 进入后启动远程桌面设置 然后发现当前用户已经有访问权 当前用户没有密码 那么远程失败 解决方法是 按win r 输入GPEDIT MSC 计算机配置 gt 安全设置 g
  • 前端框架React

    前端框架React 组件基础 React事件机制 哪些方法会让React重新渲染 render会做什么 React类组件和函数组件 React高阶组件 和普通组件的区别 适用场景 React受控组件和非受控组件 React有状态组件和无状态
  • java enum compare_Java Compare Enum value

    In Java you can use operator to compare Enum value 1 Java Enum example Language java package com mkyong java public enum
  • 啥?简单的题都不会,可咋整呢?

    目录 一 寻找原因 二 寻找解决方法 三 常见的刷题网站 刷题技巧 明明自觉学会了不少知识 可真正开始做题时 却还是出现了 一支笔 一双手 一道力扣 Leetcode 做一宿 的窘境 你是否也有过这样的经历 题型不算很难 看题解也能弄明白
  • Python3获取股票行情数据(中国个股/中国指数/全球指数)

    usr local bin python3 coding utf 8 source http www cnblogs com txw1958 import os io sys re time json base64 import webbr
  • Js常用面试题目知识整理

    Js代码题 1 千分位 题目 要求返回参数数字的千分位分隔符字符串 思路 在字符串长度不确定的情况下 可以使用递归 comma number 1000 是获取数字最后三位 将其放在返回值的最后面 并且在前面加一个逗号 comma Math