首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

我需要找出字符串js中两个字符之间的距离。我有一个解决方案,但是我不能理解与if语句相关的代码片段

要找出字符串js中两个字符之间的距离,可以使用以下解决方案:

代码语言:txt
复制
function findDistance(str, char1, char2) {
  let index1 = str.indexOf(char1);
  let index2 = str.indexOf(char2);
  
  if (index1 === -1 || index2 === -1) {
    return "字符不存在";
  }
  
  let distance = Math.abs(index1 - index2) - 1;
  return distance;
}

let str = "js";
let char1 = "j";
let char2 = "s";

let distance = findDistance(str, char1, char2);
console.log("字符之间的距离为:" + distance);

该解决方案中使用了以下方法:

  1. indexOf(char):返回字符在字符串中第一次出现的索引位置。如果字符不存在,则返回-1。
  2. Math.abs(num):返回给定数的绝对值。

上述代码中,首先使用indexOf()方法获取两个字符在字符串中的索引位置,然后计算两个索引之间的绝对值,再减去1,即可得到字符之间的距离。

如果要求的字符不存在于字符串中,则返回"字符不存在"。

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

基础 | 深入理解JavaScript操作符

那你应该会怀着激动心情继续往下看,打算先说一说操作符之外可能你没有注意到标识符,而且你马上就要知道问题答案了。 我们先看一段代码片段吧: 我们首先说操作符,代码片段中有哪些操作符?...虽然你说没错(其实并不认为这些会难倒大部分人), 但是咱可不能这么随意,标识符在JavaScript是这么定义: 标识符:指的是变量、函数、对象属性名字。...OK,下面我们找出代码片段里面的操作符: +, <,+= 事实总是让人难堪,这也是我们每天用到,可能90%的人都已经知道这一切了,但是这不是最恐怖,最恐怖是你就是剩下10%。...或操作符同样两个特性: 如果有一个操作数不是布尔值,逻辑或不一定会返回布尔值 如果第一个操作数为真,那么会直接返回第一个操作数 他特性和 操作符真好相反,在次不再演示它具体表现行为,而是把这些交给正在阅读并且极有兴趣读者们...如果下面两个问题你不能很好回答,觉得你还是要脚踏实地,戒骄戒躁。 答案暂时不给,因为得到它需要成本太低,只需要你动动手指。

43610

Vue.js框架权衡艺术

无奈,平时积累文章不够,恰好,上个月读了一段时间《Vue.js设计实现》,整理部分笔记,先发几篇。...所以,后面几篇内容都是对这本书内容整理总结 详细情况可以查看专栏学习理解《Vue.js设计实现》 《Vue.js 设计实现》是Vue.js官方团队成员 霍春阳 倾力打造,基于Vue.js3 深入解析...声明式框架,更加傻瓜式一些,只需要告诉框架,需要结果,但是如果告诉框架,框架自定义一套规范,学习成本和使用成本。...一般我们插入大量新HTML标记时,使用innerHTML 通过多次DOM操作先创建节点再指定它们之间关系相比,效率更高,因为在设置innerHTML 时就会先创建一个HTML解析器,这个解析是在浏览器级别的基础上代码...,目前没有更好方案 运行时和编译时权衡 设计一个框架时,一般三种选择 纯运行时 个人理解,纯运行时,就比如jquery,或者和命令式框架写法相似 纯编译时 比如Svelte, 0运行时,直接编译成可执行

1.7K20
  • 一统江湖大前端(5)editorconfig + eslint——你代码里藏着你优雅

    1.通配符 * 匹配除/之外任意字符串 ** 匹配任意字符串 ? 匹配任意单个字符 [name] 匹配name字符 [!...,选择设置-用户,输入高亮框两个配置项即可。...2.锦囊B——sublime代码片段 代码编写或搬运过程,诸如函数声明或条件分支或循环语句等是最容易出现缩进问题,而顺序结构代码几乎不会出现缩进问题。...if + Tab 生成if条件判断语句代码结构 for + Tab 生成正向循环或反向循环代码结构 fun + Tab 生成函数声明代码结构 其他自定义代码片段 可自定义快捷键及代码片段,并指定若干可配置焦点...七.后记——修炼 写代码是一种修行,是一个精益求精过程,被动约束和检查并不能解决所有的问题,毕竟没有语法错误和优雅代码之间还是距离

    1.2K30

    微前端04 : 乾坤资源加载机制(import-html-entry内部实现)

    : string }如果类型为string,importEntry将会调用importHTML执行相关逻辑,否则,就会加载styles、scripts所对应资源并嵌入到字符串html,注意这里是字符串...另外需要了解,这里参数styles对应是style资源url数组,之类似,scripts参数对应js资源url数组。而参数html就是一个字符串,是一个html页面的具体内容。...将在下面代码片段中注释上各个正则表达式可能匹配内容,再整体描述一下主要逻辑,了这些介绍,相信朋友们可以自己读懂该函数剩下代码。....*)>/is; 了解了这些正则匹配规则,为我们接下来分析做好了准备,由于源码processTpl内容比较丰富,为了方便理解,接下来我会将源码实际代码替换成注释。...template和execScripts两个属性,template代表了页面内容(html/css),execScripts和页面需要执行脚本相关

    1.5K20

    写给小白开源编译器

    编译器也可以理解成是这两种语言之间“桥梁”。...因为汇编语言仍然非常低级,对于追求高效程序员来说是无法忍受,所以又出现了更高级语言,这也是大部分程序员使用且熟悉编程语言,这些抽象编程语言虽然不能直接转化成机器操作,但是它比汇编语言更好理解且更能够被高效使用...所以我们需要其实就是能理解这些复杂语言并正确地转换成低级代码工具——编译器。 觉得对于初学者来说到这里个大致了解就可以了。...语法分析:获取之前生成标记(Token),并把它们转换成一种抽象表示,这种抽象表示描述了代码语句一个片段以及它们之间关系。...在 JavaScript String 类实例,是一个类数组,从下面这个例子可以看出来: 可能之前你会用 charAt 来获取字符串单个字符,因为它是在 String 类型上一个方法: 这两个方法都可以实现你想要效果

    66410

    前端面试题---JS部分

    但NaNNaN相等 ==操作符强制类型转换规则 字符串和数字之间相等比较,将字符串转换为数字之后再进行比较。...5、split( ):返回一个以指定分隔符出现位置分隔而成一个数组,数组元素不包含分隔符 6、substr( ):从起始索引号提取字符串中指定数目的字符; 7、substring( ):提取字符串两个指定索引号之间字符...,理解是在需要情况下生成一个中间工具,简化代码,并且清晰代码。...同步如打电话,通信双方不能断(我们是同时进行,同步),你一句一句,这样好处是,对方想表达信息马上能收到,但是在打着电话,无法做别的事情。...对模块理解是,一个模块是实现一个特定功能一组方法。在最开始时候,js 只实现一些简单功能,所以并没有模块概念 ,但随着程序越来越复杂,代码模块化开发变得越来越重要。

    75720

    一个不小心,就把公司JS代码变成了圣诞树,CTO让滚回家~

    万万没想到 CTO看了一眼 直接把“员工辞退书”摔在了脸上 小编当时内心是崩溃 ? 但是 小编本着敬业精神 也要带着大家看看这篇文章 (不能一个人被辞退,哈哈哈) ?...把js源码解构成一个数组 然后后续根据每行需要字符数 从这个数组里不断取片段出来拼接 ?...小数点语法,例如 0.01 因为之前我们用点号来分割代码但是这里点号不能作为分割符使用,需要保留前后数字跟点号在一行 小数点语法,例如 0.01 因为之前我们用点号来分割代码但是这里点号不能作为分割符使用...有些比较特殊,例如小数点语法提取,在判断到当前字符是点号之后,需要往前和向后循环查找数字,然后把整个语法找出来。 这里不细讲,在keep-line.js 这个文件又一大坨代码做这个事情。...) 我们如何处理呢,那就是将字符串解构,以5个为单位将字符串分离成小块 这里两个比较重要问题需要处理; 1、字符串转义字符如何处理,还有一些特殊字符,例如0x01这样字符,这些字符不能被分离到不同字符串

    2K20

    深入浅出 Babel 上篇:架构和原理 + 实战

    词法解析(Lexical Analysis):词法解析器(Tokenizer)在这个阶段将字符串形式代码转换为Tokens(令牌). Tokens 可以视作是一些语法片段组成数组....DOM一样,所以Babel实现了这么一个简单模板引擎,可以将字符串代码转换为AST。...这样子不仅低效,它们逻辑分散在各处,会让整个系统变得难以理解和调试, 最后插件之间关系就纠缠不清,乱成一锅粥。...这就是转换器需要考虑作用域问题,AST 转换前提是保证程序正确性。我们在添加和修改引用时,需要确保现有的所有引用不冲突。Babel本身不能检测这类异常,只能依靠插件开发者谨慎处理。...在 index.js 文件填入我们代码。index.js默认导出一个函数,函数结构如下: br 我们可以从访问器方法第二个参数state获取用户传入参数。

    1.1K20

    全程无尿点,死磕前端~

    前一段时间在淘宝买了个毛绒玩具(蓝胖子),收到快递,在拆解过程: 1.width 装玩具盒子宽度 2.height 装玩具盒子宽度 3.border 装玩具盒子厚度 4.padding 玩具和盒子之间距离...(蓝胖子不能压瘪,要不然差评,所以它被保护很好) 5.margin 快递盒子和放快递大盒子之间距离 个现象是,当盒子长和宽固定后, border 和 padding 增加,都会改变整体尺寸...、border-right 和 border-bottom 5.padding 设置元素内容边框间距离(即蓝胖子和快递盒之间距离) 6.margin 设置元素和外界距离 7.float 设置元素浮动...想要取值,使用 oDiv.innerHTML 即可做到 对了,写 js 时,一个问题需要注意: 如果 script 标签内容(要获取某一个元素值)在元素之前,那么获取不到,因为未被声明(代码从上往下执行...3.8 字符串相关方法 1.直接用 + 进行拼接操作 2.parseInt() 将数字字符串转化为整数 3.parseFloat() 将数字字符串转化为小数 4.split() 把一个字符串分隔成字符串组成数组

    61910

    JavaScript 编程精解 中文第三版 二、程序结构

    括号之间值被赋予函数内部程序。 在这个例子,prompt函数使用我们提供字符串作为文本来显示在对话框。 赋予函数值称为参数。 不同函数可能需要不同数量或不同类型参数。...控制流 当你程序包含多个语句时,这些语句就像是一个故事一样从上到下执行。 这个示例程序两个语句。 第一个要求用户输入一个数字,第二个在第一个之后执行,显示该数字平方。...我们需要这种转换,因为prompt结果是一个字符串值,我们需要一个数字。 类似的函数叫做String和Boolean,它们将值转换为这些类型。 以下是直线控制流程相当简单示意图: ?...唯一变化是,所有循环“状态”相关语句,在for之后被组合在一起。 关键字for后面的括号必须包含两个分号。第一个分号前面的是循环初始化部分,通常是定义一个绑定。...JavaScript 编写注释两种方法,写单行注释时,使用两个斜杠字符开头,并在后面添加文本注释。

    1.2K150

    分享 8 个关于高级前端 JavaScript 面试题

    + 运算符一个有趣属性是,当操作数之一是字符串时,它更喜欢字符串连接。在我们例子,“1”是一个字符串,因此 JavaScript 隐式地将数值 1 强制转换为字符串。...,并且循环不会导致无限循环: [1, 2, 3, 1, 2, 3] 3、原型和__proto__之间区别 原型属性是 JavaScript 构造函数相关属性。...这是一个有趣问题,测试您是否知道强制转换如何对象一起使用。 在字符串连接或算术运算等场景处理对象时,这种转换至关重要。...在本例,valueOf 方法返回 42,然后,由于字符串连接而隐式转换为字符串。因此,代码输出将为 42。...: 15 Index: 3, element: 21 最后总结 以上就是今天这篇文章想您分享8个关于JS前端面试题, 希望这篇文章对您面试准备之旅有所帮助。

    53030

    达观数据基于Deep Learning中文分词尝试(上篇)

    基于词典方法 基于词典方法本质上就是字符串匹配方法,将一串文本文字片段和已有的词典进行匹配,如果匹配到,则此文字片段就作为一个分词结果。...one-hot向量比较简单也容易理解但是很多问题,比如当加入新词时,整个向量长度会改变,并且存在维数过高难以计算问题,以及向量表示方法很难体现两个之间关系,因此一般情况下one-hot向量较少使用...考虑一个固定窗口大小文本片段来解决维度变化问题,如果在这样片段两个词出现了,就认为这两个词有关。...如果预测一个词汇需要较长上下文,随着这个距离增长,RNN将很难学到这些长距离信息依赖,虽然这对我们人类相对容易。...下面着重看一下两个关键点:模型数据格式及模型设计。 训练数据准备 ? 这段代码是数据准备情况。将尼采全文进行数据切割,每40个字符一个片段,将紧接这个片段字符作为预测值,来进行训练。

    1.2K140

    【C语言总集篇】函数篇——从不会到会过程

    经过前段时间学习,我们已经对分支循环语句一个基本认知,咱们也通过了一些编码题加深了对这些知识点理解运用。今天开始,咱们将进入下一个内容学习——函数。 一、函数是什么?...相比于其它代码,它是相对独立,这里理解需要使用它时候,它才能起作用,需要使用它时候,它也能存在于咱们代码里这里举个例子来证明一下: 大家可以看到,在这个代码,我们编写了一个求两数之和函数...现在有几个问题需要我们探讨一下: 字符串结束标志\0是否被拷贝到数组b?数组b其它字符去哪里了?...,就需要通过strcpy来将修改字符串复制到该数组,而结构体成员price是一个整型变量,我们在修改变量值时只需要重新赋值就可以完成。...下面我们通过实例来理解自定义函数; 3.自定义函数实例理解 为了更好理解自定义函数,下面我们借助之前做过题目找出两个整数最大值来说明自定义函数各个组成部分及其作用; (1)写一个函数可以找出两个整数最大值

    28011

    vuev-html指令使用注意事项

    但是这里几点需要开发者注意: 1、V-html更新是元素 innerHTML 。内容按普通 HTML 插入, 不会作为 Vue 模板进行编译 。...但是有的时候我们需要渲染html片段中有插值表达式,或者按照Vue模板语法给dom元素绑定了事件,代码如下: hello world</p...生命周期函数内,我们通过生成一个组件实例形式将html格式字符串渲染成了一个dom元素,最终通过dom操作将其插入页面。...以上代码可以优化,我们将html格式字符串转换为dom操作封装为一个函数,代码如下: hello world <my-html.../deep/ .b{/* ... */} } 第二种解决方案,单文件组件style标签可以使用多次,可以一个stlye标签带scoped属性针对当前组件,另外一个style标签针对全局生效,但是内部我们采用特殊命名规则即可

    23.5K41

    大话 JavaScript(Speaking JavaScript):第二十六章到第三十章

    例如: 多少空格(括号后,语句之间等) 缩进(例如,每级缩进多少空格) 如何在哪里编写var语句 第二条规则是,如果你加入一个现有项目,你应该严格遵循它规则(即使你不同意它们)。...如果这些函数足够小并且有意义名称,你通常可以避免注释。 注释应该解释为什么事情发生。如果你需要了解一个概念才能理解代码,你可以在标识符包含该概念名称,或者在注释中提到它。...不要聪明;不要让思考 很多巧妙代码利用对语言深入了解来实现令人印象深刻简洁性。这样代码通常像一个谜题,很难理解。...引用字符串:在 JavaScript ,你可以用单引号或双引号写字符串文字。单引号更常见。它们使得处理 HTML 代码更容易(通常 HTML 代码属性值是双引号)。...换句话说,你可以在使用变量上下文中声明变量(在循环内,在then块或else块内等)。这种局部封装使得代码片段更容易理解。也更容易删除代码片段或将其移动到其他地方。

    15710

    Lucene基本知识入门

    但是要求错误最大编辑距离不能超过2 // 编辑距离一个单词到另一个单词最少要修改次数 facebool --> facebook 需要编辑1次,编辑距离就是1 // Query...6.2.1 索引创建简述 假设文档集合里面有100篇文档,为了方便表示,我们为文档编号从1到100 左边保存是一系列字符串,称为词典;右面表示每个字符串都指向包含此字符串文档 (Document...如何判断搜索出文档和查询语句相关性呢? 6.3.1 输入查询语句 查询语句也是一定语法,比如最基本 AND, OR, NOT 等。...6.3.4 计算相关性排序 计算文档和查询语句相关性,我们可以把查询语句看作一片短小文档,对文档文档之间相关性 (relevance) 进行打分 (scoring),分数高相关性好,排在前面。...比如计算一个共有 11 个词查询语句,共有三篇文档搜索出来,首先计算所有词权重,然后根据打分公式分别计算查询语句三篇文档相关性。最后按照相关性进行排序,即可得到最想要文档。

    84810

    对Copilot进行逆向工程之后,发现它可能只用了参数量12B小模型

    prompt 长啥样 Copilot 扩展在 prompt 编码了大量你项目相关信息。Copilot 一个相当复杂 prompt 工程 pipeline。...这或许是由于我难以理解代码混淆(obfuscated code)(尽管我找不到该代码替代解释)。 仔细观察一下片段提取 对来说,prompt 生成最完整部分似乎是从其他文件中提取片段。...现在,对已接受建议进行精确搜索过于严格,因此他们会测量建议文本和插入点周围窗口之间编辑距离(在字符级别和单词级别)。...如果插入和窗口之间「单词」级编辑距离小于 50%(归一化为建议大小),则该建议被视为「仍在代码」。 当然,这一切只针对已接受代码。 问题二:telemetry 数据包含代码片段吗? 是的,包含。...搜索字符串 shouldLog (e,t,n){ ,如果找不到,也可以尝试 shouldLog ( 。在几个搜索匹配,其中一个将是非空函数定义。 在函数体开头,添加 return true。

    1.5K30

    计算机小白成长历程——函数(1)

    经过前段时间学习,我们已经对分支循环语句一个基本认知,咱们也通过了一些编码题加深了对这些知识点理解运用。今天开始,咱们将进入下一个内容学习——函数。 一、函数是什么?...相比于其它代码,它是相对独立,这里理解需要使用它时候,它才能起作用,需要使用它时候,它也能存在于咱们代码里这里举个例子来证明一下: 大家可以看到,在这个代码,我们编写了一个求两数之和函数...现在有几个问题需要我们探讨一下 字符串结束标志\0是否被拷贝到数组b?数组b其它字符去哪里了?...,数组元素是“5元如何用7天”这个字符串,如果我们需要修改这个里面的内容的话,就需要通过strcpy来将修改字符串复制到该数组,而结构体成员price是一个整型变量,我们在修改变量值时只需要重新赋值就可以完成...: (1)写一个函数可以找出两个整数最大值: //找出两个整数最大值 int MAX(int x, int y)//int——返回类型;MAX——函数名;x,y——函数参数; { if (x

    34530

    写给设计师的人工智能指南:如何找出相似的文章

    文本挖掘一般过程: 1、获取文本 使用爬虫技术,获取网页上文本; 前阵子更新《数据可视化爬取》系列,可以派上用场了~ 2、对文本进行预处理 主要是去掉一些标点符号、停顿词、空格等没有意义字符串...2个N维向量之间余弦值公式: 下面是js代码: function VectorN(n,m) { var sum1=0,sum2=0,sum3=0; for(var i=0;i<n.length...据此, 我们就得到了"找出相似文章"一种算法: 通过分词,找出两篇文章关键词; 每篇文章取出所有关键词,合并成一个集合,计算每篇文章对于这个集合词频; 生成两篇文章各自词频向量; 计算两个向量余弦相似度...~ 在做分类时常常需要估算不同样本之间相似性度量 Similarity Measurement, 这时通常采用方法就是计算样本间距离”(Distance)。...汉明距离 9. 杰卡德距离 & 杰卡德相似系数 10. 相关系数 & 相关距离 11. 信息熵 本文采用了余弦相似度,回头再研究下这11种之间差异。 还有,这个实验是为推荐系统做准备

    1.1K100
    领券