【JavaScript】JS能力测试题:数组扁平化 | 判断质数 | 获取字符串的长度

这篇具有很好参考价值的文章主要介绍了【JavaScript】JS能力测试题:数组扁平化 | 判断质数 | 获取字符串的长度。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

💎个人主页: 阿选不出来
💎个人简介: 大三学生,热爱Web前端,随机掉落学习碎片
💎目前开发的专栏: JS 🍭Vue🍭React🍭

💎祝愿今天的你比昨天更加博识了!

数组扁平化

题目描述

请补全JavaScript代码,要求将数组参数中的多维数组扩展为一维数组并返回该数组。
注意:

  1. 数组参数中仅包含数组类型和数字类型

题解

递归

遍历数组 并 判断遍历的当前元素的数据类型,分为以下两种情况:

  1. 类型为数值:添加该元素到输出数组中。
  2. 类型为数组:重复上诉操作。
  const _flatten = arr => {
	
	return arr.reduce((target, item) => {
	return target.concat(Array.isArray(item) ? _flatten(item) : item);
 }, [])
}

其中参数 target为输出数组,item为遍历的当前元素

字符串法

a. 利用toString()方法,将数组转为字符串,在使用split()方法,以","为分割变为数组。

b. 利用join()方法将数组转为字符串且用","分割,在利用上诉split()方法以","为分割变为数组。

const _flatten = arr => {
	return arr.toString().split(",")
}
const _flatten = arr => {
	return arr.join(",").split(",")
}

简单粗暴法

思路:

使用while循环检测数组,只要数组中存在元素的数据类型为数组,就利用扩展运算符将该元素的可遍历属性追加到输出数组中展开直到数组元素的数据类型均为数值为止。

const _flatten = arr => {
	while(arr.some(item=>{Array.isArray(item)})){
    	arr = [].concat(...arr)
	}
	return arr
}

some() :测试数组中是否至少有一个元素通过了由提供的函数实现的测试,在本题中用于测试数组中是否存在元素的数据类型为数组。

扩展运算符(…):取出参数对象中的所有可遍历属性,拷贝到当前对象之中。在本题中扩展运算符(…)用于取出被检测到元素类型为数组的对象内的所有可遍历属性,并使用concat方法拷贝到输出数组中。

判断质数

题目描述

请补全JavaScript代码,要求在Number对象的原型对象上添加"_isPrime"函数,该函数判断调用的对象是否为一个质数,是则返回true,否则返回false。

题解

质数的定义,不能被除了1和它本身的数字因式分解的数字,对应到数学的概念就是取余为0

双指针

Number.prototype._isPrime = function(){
    let j=this-1;
    for(let i=2; i<j;i++){
        
        if(i>=j)break
        if(!(this%i) || !(this%j)){
            return false
        }
        j--       
    }
    return true
}

平方根

假设Number数值为c, 若a * b = c 且(a<=b)则a,b需满足 a<=Math.sqrt©<=b,因此只用依次让[2,Math.sqrt©]范围内的数值对number进行取余数检验。

Number.prototype._isPrime = function(){
    
    for(let i=2; i <= Math.sqrt(this); i++){
        if(!(this%i)){
            return false
        }
    }
    return true
}

获取字符串的长度

题目描述

如果第二个参数 bUnicode255For1 === true,则所有字符长度为 1
否则如果字符 Unicode 编码 > 255 则长度为 2

示例:

输入:

'hello world, 牛客', false

输出:

17

题解

function strLength(s, bUnicode255For1) {
    if(bUnicode255For1){
       return s.length 
    }else{
        let length = 0
        for(let i=0; i<s.length; i++){
            if(s[i].codePointAt() > 255){
                length += 2
            }else{
                length += 1
            }
        }
        return length
    }
}

codePointAt(index)

作用:返回一个非负整数,该整数是从给定索引开始的字符的 Unicode 码位值。

参数:index文章来源地址https://www.toymoban.com/news/detail-722360.html

  • 字符串的索引,返回指定字符的Unicode码位值。

到了这里,关于【JavaScript】JS能力测试题:数组扁平化 | 判断质数 | 获取字符串的长度的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • js树形结构数组扁平化

    js树形结构数组扁平化 1. 树形结构 ---- 扁平化数据 1.代码如下(数据扁平化1示例): 2.代码如下(数据扁平化2示例): 3.代码如下(数据扁平化3示例): 4.代码如下(数据扁平化4示例):

    2024年02月11日
    浏览(29)
  • 白盒测试题一

    1.下列流程图中变量a、b、c、d均为非负整数,编写程序实现相应分析处理,并设计测试数据进行语句覆盖测试。要求a、b、c、d取最小可能值。 代码如下: 2.根据流程图编写程序实现相应分析处理,并设计测试数据进行语句覆盖测试。执行算式输出文字“算式一值:”和c的值,

    2024年02月03日
    浏览(30)
  • 【SDN测试题】

    SDN测试题 一、判断题 NFV与SDN的基础都是通用服务器、云计算以及虚拟化技术。 正确答案:对 安装OpenvSwitch时必须根据系统内核版本选择相应的Open vSwitch版本。 正确答案:对 执行命令ovs-vsctl del-br br0会将br0及挂接到br0上的端口一并删除。 正确答案:对 OpenDaylight是一个基于

    2024年02月08日
    浏览(27)
  • 软件测试题答案

    搜索答案的一个方法 点Ctrl+F,在页面上查找,输入题目上的部分字 软件测试题及答案 1(单选题)通常,()是在编码阶段进行的测试,它是整个测试工作的基础。 A.系统测试 B.确认测试 C.集成测试 D.单元测试 正确答案: D 2(单选题)如果测试一个单元时,其所调用的底层单

    2024年01月25日
    浏览(39)
  • 软件测试技能大赛任务二单元测试试题

    任务二   单元测试 执行代码测试 本部分按照要求,执行单元测试,编写java应用程序,按照要求的覆盖方法设计测试数据,使用JUnit框架编写测试类对程序代码进行测试,对测试执行结果进行截图,将相关代码和相关截图粘贴到单元测试报告中。 题目1 :根据下列流程图编写

    2024年02月14日
    浏览(37)
  • Hive期末测试题(头歌)

    第1关:计算“Bad Boys (1995)”这部电影的评分次数 第2关:统计每年的电影评分次数 使用Hive的字符串函数来处理这个问题。 这个查询首先从电影名称中提取出年份,然后根据年份对电影评分进行分组统计。 第3关:统计不同性别的观影用户1995年评论电影次数 对比不同性别的观

    2024年04月23日
    浏览(37)
  • Spring测试题及答案

    1 : 下面关于“依赖注入”的说法,错误的是(D) A. 将组件间的依赖关系采取配置文件的方式管理,而不是硬编码在代码中 B. 降低了组件间的耦合,使程序更容易维护和升级 C. 促进了“面向接口编程”,使构建大规模程序更轻松 D. 需要定义大量接口,增加编码复杂度 2 :

    2024年02月13日
    浏览(27)
  • Office办公软件测试题

    一、单选题 1.要将一篇文档中,所有的\\\"微软\\\"都被录入员误输为\\\"徽软\\\",如何最快捷地改正()。 A.用[定位]命令 B.用[开始]菜单中的[替换]命令 C.单击[复制],再在插入点单击[粘贴] D.用插入光标逐字查找,分别改正 2.在表格中一次性插入3行,正确的方法是()。 A.选择[表格

    2024年02月11日
    浏览(37)
  • Python 基础测试题(含答案)

    A、 1_a B、 for C、 年龄 D、 a#b A、 char B、 int C、 float D、 str A、 with B、 int C、 del D、 for A、 3 B、 4 C、 True D、 False A、 “500/10” B、 500/10 C、 50 D、 50.0 A、 bc B、 bcd C、 cd D、 cde A、 split B、 strip C、 join D、 len A、 continue B、 pass C、 break D、 exit A、 a[3] B、 a[-3] C、 a[2] D、 a[-2]

    2024年02月08日
    浏览(30)
  • c语言经典测试题2

    1.题1 我们来思考一下它的结果是什么? 我们来分析一下:\\\\是转义为字符\\\'\\\',123表示的是一个八进制,算一个字符,t算一个字符,加上\\0,应该有13个,但是strlen只计算\\0前的字符个数。所以结果应该是12.我们来看看:  2.题2 大家来思考一下结果是什么呢? 我们来分析一下

    2024年02月22日
    浏览(24)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包