文章详情

短信预约-IT技能 免费直播动态提醒

请输入下面的图形验证码

提交验证

短信预约提醒成功

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

2023-09-28 15:08

关注

💎个人主页: 阿选不出来
💎个人简介: 大三学生,热爱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://blog.csdn.net/m0_63300737/article/details/133319227

阅读原文内容投诉

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

软考中级精品资料免费领

  • 历年真题答案解析
  • 备考技巧名师总结
  • 高频考点精准押题
  • 2024年上半年信息系统项目管理师第二批次真题及答案解析(完整版)

    难度     807人已做
    查看
  • 【考后总结】2024年5月26日信息系统项目管理师第2批次考情分析

    难度     351人已做
    查看
  • 【考后总结】2024年5月25日信息系统项目管理师第1批次考情分析

    难度     314人已做
    查看
  • 2024年上半年软考高项第一、二批次真题考点汇总(完整版)

    难度     433人已做
    查看
  • 2024年上半年系统架构设计师考试综合知识真题

    难度     221人已做
    查看

相关文章

发现更多好内容

猜你喜欢

AI推送时光机
位置:首页-资讯-后端开发
咦!没有更多了?去看看其它编程学习网 内容吧
首页课程
资料下载
问答资讯