前端萌新面试:手写代码JS实现字符串反转

前言

因为做前年小红书的前端校招面试题,发现出现好几道关于字符串对象和数组对象的题目,说难不难,但突然要写的话一时想不起来,这不想着做个小总结。

首先明白字符串是不可变的,不可变的字符串数据类型要实现动态反转,需要借助数组来实现

知识点

String对象:

split():把字符串分割成字符串数组(split()不改变原始字符串)

stringA.split(separator,limitArrayLength)看似复杂的参数,其实它们都是可选值

separator分隔符,可选项,意思是stringA要以什么样的分隔符作为标识分隔

limitArrayLength可选项,指定返回的数组的最大长度

  • split() 方法相当于是将string对象转变成Array对象
  • split("")相当于["how are you"] => ['h', 'o', 'w', ' ', 'a', 'r', 'e', ' ', 'y', 'o', 'u'],字符默认一个一个分割
  • split()相当于["how are you"] => ['how are you'],相当于将字符串对象转化为数组对象
  • split(" ")相当于["how are you"] => ['how', 'are', 'you'],以空格作为分割符
  • split("o", 3)相当于["how are you doing in this morning?"] => ['h', 'w are y', 'u d'],以字母o作为分割符,返回数组长度为3
charAt():返回指定位置的字符,从0开始

stringA.charAt(index),index必需项,字符索引

Array对象:

reverse():用于颠倒数组中元素的顺序
join():用于把数组中所有元素转换连接成一个字符串

ArrayA.join(separator)看似复杂的参数,其实它们都是可选值

separator可选项,指定要使用的分隔符,默认使用逗号分割

  • join() 方法相当于是将Array对象转变成string对象
  • join("")相当于["red", "pink", "black"] => redpinkblack,可以这样理解,有设置分隔符,分隔符无
  • join()相当于["red", "pink", "black"] => red,pink,black,默认使用逗号分割

JavaScript中字符串和数组的区别:

  • JavaScript中字符串是不可变的,数组是可变的

字符串不可变是指字符串对象的操作方法不会改变其原始值,而是创建并返回一个新的字符串

数组对象的操作方法都是在其原始值上操作的

  • 数组有reverse()方法

个人理解是正是因为字符串没有reverse()方法,所以才要通过转化为数组来实现

三种实现方法

使用字符串和数组的成员函数实现

function getStr(string) {let newStr = string.split("").reverse().join(""); //详细解释见前知识点部分return newStr;
}
console.log(getStr("hello world!"));//!dlrow olleh

利用for语句反向遍历字符串,只用charAt() 方法

function getStr2(string) {var newStr = [];for (let i = string.length - 1, j = 0; i >= 0; i--, j++) { //j => newStr,  i => stringnewStr[j] = string[i];};return newStr.join("");
}
console.log(getStr2("abcdef"));//fedcba

只用join() 方法

function getStr3(string) {if (string.length == 0) return null;var i = string.length;var dstr = "";while (--i >= 0) {dstr += string.charAt(i);}return dstr;
}
console.log(getStr3("fedcba"));//abcdef

最后

代码实现是次要的,主要是大脑理解和运用它们,代码千变万化,AI也必然会剔除一些初级、基础不扎实的程序员,归根结底还是扎根万变不离其宗的知识内化于心,写出不轻易被AI取代的个人代码

前端面试:手写代码JS实现字符串反转相关推荐

  1. 2022必会的前端面试手写题

    前端面试题视频讲解 将数字每千分位用逗号隔开 数字有小数版本: let format = n => {let num = n.toString() // 转成字符串let decimals = ...

  2. 前端date format_前端面试-手撕代码篇

    前言 在前端面试有一个非常重要的环节,也是面试者最担心的一个环节.对"手撕代码"的考察需要面试者平时总结和积累(临时抱佛脚是不好使的),在这里笔者就自己如何攻破"手撕代码 ...

  3. 前端面试手写题汇总大全(含答案)-- 持续更新

    高频 一. 柯里化函数(Currying)和反柯里化 简介 柯里化(Currying),又称部分求值(Partial Evaluation),是把接受多个参数的函数变换成接受一个单一参数(最初函数的第 ...

  4. zen-coding for notepad++,前端最佳手写代码编辑器

    zen-Coding是一款快速编写HTML,CSS(或其他格式化语言)代码的编辑器插件,这个插件可以用缩写方式完成大量重复的编码工作,是web前端从业者的利器. zen-Coding插件支持多种编辑器 ...

  5. java数据结构与算法面试,java面试手写代码

    前言 总有一天你会明白,你的努力终究没有白费 年前辞职,人算不如天算,突如其来的疫情完全把自己的计划给打碎了,面试难度简直不亚于一场江苏高考题,后悔.焦虑不安.失眠成了我的生活状态. 从三月底开始投递 ...

  6. 2020年前端面试之JS手写代码题合集

    2020年前端面试之JS手写代码题合集 预计会有上千道题,后续慢慢补! 1.  写一个把字符串大小写切换的方法 function caseConvert(str){return str.replace ...

  7. 【面试题】 「中高级前端面试」JavaScript手写代码无敌秘籍

    大厂面试题分享 面试题库 前端面试题库 (面试必备)   推荐:★★★★★ 地址:前端面试题库 1. 实现一个new操作符 new操作符做了这些事: 它创建了一个全新的对象. 它会被执行[[Proto ...

  8. 前端面试高频手写代码题

    前端面试高频手写代码题 一.实现一个解析URL参数的方法 方法一:String和Array的相关API 方法二: Web API 提供的 URL 方法三:正则表达式+string.replace方法 ...

  9. 2021-最新Web前端经典面试试题及答案-史上最全前端面试题(含答案)---手写代码篇

    ★★★ 手写代码:实现forEach map filter reduce ★★★ 手写实现一个简易的 Vue Reactive ★★★ 手写代码,监测数组变化,并返回数组长度 ★★★ 手写原生继承,并 ...

最新文章

  1. boost::astar_search用法的测试程序
  2. KERNELRELEASE
  3. 结巴分词关键词相似度_gensim和jieba分词进行主题分析,文本相似度
  4. 强烈推荐给从事IT业的同行们 (转载)
  5. 使用sqlite3创建数据库表的时候须要注意
  6. Latex 中插入超链接 插入网址
  7. 乌班图系统修改服务器时间的命令,ubuntu 修改系统时间无效
  8. SAP物料批次管理配置及操作手册
  9. 软件评测师备考经验分享
  10. 【计算技巧】分数复数的共轭--分数复数模的平方计算技巧
  11. 计算机无法登陆提示rpc服务器不可用,电脑提示RPC服务器不可用的解决方法
  12. 计算机硬件连接子系统,网络综合布线七大子系统详细讲解
  13. 扒一扒最近很火的被马云强东联手封杀性感女黑帽
  14. 生活总结[置顶] 程序员的奋斗史(十八)——人活着,只是一种态度
  15. NumPy基础之大作业(Iris数据分析)
  16. 高通 qca-wifi 移植
  17. WPF 基本控件的介绍
  18. ABI (Application Binary Interface)解析
  19. TWRP / android 四清三清双请概念
  20. android 换行符 编码_android中的常见的占位符及转义字符

热门文章

  1. 社区拼团商城小程序源码+完整前后端+安装部署教程
  2. echarts国学书目推荐旭日图效果
  3. spring框架AOP的理解,程序高类聚的体现
  4. Redis 6.0多线程模型总结
  5. 口腔科学复习重点 名词解释
  6. JSP汽车销售管理系统myeclipse开发sql计算机程序web结构java编程网页源码
  7. 跳出惯性逻辑思维圈,你也可以的
  8. html+css美图卡片小练习(未用浮动)
  9. Java开发者福音,阿里巴巴宣布连任Java全球管理组织席位!
  10. Web:用 img插入图片的细节