当前位置: 首页 > article >正文

字符串与数值扩展【ES6】

有一些失败比胜利更有价值。——蒙田

目录

  • 字符串扩展:
    • includes函数:
    • startsWith方法:
    • endsWith方法:
    • repeat函数:
  • 数值扩展:
    • 二进制和八进制表示法:
    • Number.isFinite与Number.isNaN方法:
      • Number.isFinite:
      • Number.isNaN:
    • Number.isInteger方法:
    • 极小常量Number.EPSLON:
    • Math.trunc:
    • Math.sign:

字符串扩展:

includes函数:

判断一个数组/字符串中是否包含一个特定的项或子字符串的方法,如果包含则返回true,否则返回false。应用非常广泛,例如模糊搜索、模糊查询。

对于字符串的 includes() 方法,它可以接收两个参数:

  • searchString‌(必需):要搜索的子字符串。
  • position‌(可选):表示从哪个索引位置开始搜索,默认为 0。如果 position 是负数,则计算出的位置会从字符串末尾开始计算。

针对没有索引的情况:

let name = 'Kitty';
console.log(name.includes('K')); // true
console.log(name.includes('Ki')); //true
console.log(name.includes('a'));  // false

针对有索引的情况:

let str = "Hello, world!";
console.log(str.includes("world")); // 输出: true
console.log(str.includes("World")); // 输出: false(区分大小写)
console.log(str.includes("o, w", 4));// 输出: true(从索引4开始搜索)
console.log(str.includes("o, w", -3)); // 输出: true(从字符串末尾往前数3个字符的位置开始搜索)

startsWith方法:

用于检测字符串是否以指定的前缀开始,startsWith 方法是区分大小写的,返回true/false。

对于startsWith 方法有两个参数:

  • searchString‌(必需):要搜索的前缀字符串。
  • position‌(可选):表示从哪个索引位置开始搜索字符串,默认为 0。如果 position 是负数,则计算出的位置会从字符串末尾开始计算。

针对没有索引的情况:

let name = 'Kitty';
console.log(name.startsWith('K')); // true
console.log(name.startsWith('Kit')); // true
console.log(name.startsWith('t')); // false

针对有索引的情况:

let str = "Hello, world!";
console.log(str.startsWith("world", 7));     // 输出: true(从索引7开始搜索)

endsWith方法:

别用于判断字符串是否以指定的后缀结束。同样区分大小写,返回true/false

endsWith 方法也有两个参数:

  • searchString‌(必需):要搜索的后缀字符串。
  • length‌(可选):表示要搜索的字符串长度,默认为字符串本身的长度。如果 length 是负数,则计算出的长度会与字符串长度相加。【也就是第二个参数是对于前n个字符来看往前搜索有没有我们输入的后缀字符串结尾

针对没有长度这个可选参数的情况:

let name = 'Kitty';
console.log(name.endsWith('y')); // true
console.log(name.endsWith('tty')); // true
console.log(name.endsWith('t')); // false

针对有可选参数的情况:

let str = "Hello, world!";
console.log(str.endsWith("world", 12));    // 输出: true(搜索到字符串末尾)
console.log(str.endsWith("world", 6));     // 输出: false(只搜索到索引6)

repeat函数:

用于重复字符串指定的次数,并返回一个新的字符串。

它有一个参数:

  • count‌(必需):重复的次数,必须是一个介于 0 和正无穷大之间的整数。如果 count 是 0,则返回空字符串;如果是负整数或无穷大,则抛出 RangeError。
let name = 'kitty';
console.log(name.repeat(2));// kittykitty
console.log(name.repeat(0));// 空字符串
console.log(name.repeat(2.8));// kittykitty 自动切掉小数点
console.log(name.repeat('AAa'));// 空字符串
console.log(name.repeat('3'));// kittykittykitty

数值扩展:

二进制和八进制表示法:

二进制表示用 0b 开头 “零b”
八进制表示用 0o 开头 “零o”
十六进制表示用 0x 开头 “零x”

let num1 = 100;
let num2 = 0x100; // 十六进制写法
let num3 = 0b100; // 二进制写法
let num4 = 0o100; // 八进制写法

console.log(num1); // 100
console.log(num2); // 256
console.log(num3); // 4
console.log(num4); // 64

Number.isFinite与Number.isNaN方法:

在ES6之前,isNaN 和 isFinite 都是全局方法,它们属于全局对象 window(在浏览器环境中)或 global(在Node.js环境中)。这意味着你可以在任何地方直接调用它们,不需要通过某个对象来访问。

// ES6之前
console.log(isNaN("abc"));    // true
console.log(isFinite(123));   // true

这两个方法在判断时会先将非数值类型的参数转换为数值类型,然后再进行判断。这可能导致一些不直观的结果,比如 isNaN(“abc”) 返回 true,因为 “abc” 被转换为 NaN 后再判断。

在ES6之后,isNaN 和 isFinite 被移植到了 Number 对象上,成为了 Number.isNaN 和 Number.isFinite 方法。这意味着你需要通过 Number 对象来访问它们,如下所示:

// ES6及之后
console.log(Number.isNaN("abc"));  // false
console.log(Number.isFinite(123)); // true

Number.isFinite:

Number.isFinite用于判断一个值是否为有限数。
它不会进行类型转换,只有当参数是有限数时(即不是 Infinity、-Infinity、NaN,且是数值类型)才返回 true。

console.log(Number.isFinite(123)); // true
console.log(Number.isFinite(100 / 0)); // false
console.log(Number.isFinite(Infinity)); // false
console.log(Number.isFinite("abc")); // false 因为 "abc" 本身不是 NaN,且不会进行类型转换
console.log(Number.isFinite("100")); // false  因为它不会进行类型转换

Number.isNaN:

用于判断一个值是否为 NaN(Not-a-Number,非数值)。
它不会进行类型转换,只有当参数是 NaN 时才返回 true。

console.log(Number.isNaN(NaN)); // true
console.log(Number.isNaN(123)); // false
console.log(Number.isNaN("abc")); // false 因为 "abc" 本身不是 NaN,且不会进行类型转换
console.log(Number.isNaN("100")); // false 不会进行类型转换

Number.isInteger方法:

判断一个数值是否为整数。它不会进行类型转换!

console.log(Number.isInteger(100)); // true
console.log(Number.isInteger(100.0)); // true
console.log(Number.isInteger(100.5)); // false
console.log(Number.isInteger('kitty')); // false
console.log(Number.isInteger("100")); // false

极小常量Number.EPSLON:

它表示1 与 大于1的最小浮点数之间的差2.2220446049250313e-16

我们在计算的时候是允许有极小常量的误差存在,而计算机是 不允许 0.30000000000000004 === 0.3的,这时候极小常量就派上用场了。

function isEqual (a, b) {
      return Math.abs(a - b) < Number.EPSILON;
    }
console.log(isEqual(0.1 + 0.2, 0.3)); // true
console.log(0.1 + 0.2 === 0.3); // false 
console.log(0.1 + 0.2); // 0.30000000000000004 

Math.trunc:

将小数部分抹掉,返回一个整数。

console.log(Math.trunc(1.2)); // 1
console.log(Math.trunc(1.8)); // 1
console.log(Math.trunc(-1.2)); // -1
console.log(Math.trunc(-1.8)); // -1

Math.sign:

用来判断一个数到底是正数、负数、还是零。对于非数值,会将其先转为数值。

console.log(Math.sign(-100)); // -1
console.log(Math.sign(+100)); // +1
console.log(Math.sign(0)); // +0
console.log(Math.sign(-0)); // -0
console.log(Math.sign('kitty')); // NaN

http://www.kler.cn/a/571855.html

相关文章:

  • (二 十 一)趣学设计模式 之 访问者模式!
  • 大模型工程师学习日记(十一):FAISS 高效相似度搜索和密集向量聚类的库
  • 李国杰院士 “七问” DeepSeek:深度剖析 AI 发展新态势
  • 【Elasticsearch】ignore_malformed
  • 数据库二三事(9)
  • 从像素到体验:解码UI设计的未来进化论
  • SQL Server数据库中用存储过程来取顺序号
  • LLM 大语言模型定义以及关键技术术语认知
  • 基于FPGA的一些常识问题
  • GIT工具学习【2】:分支
  • OpenWebUI提示器:Prompt工程的“智能助手”还是“自动化革命”?
  • 【网络编程】之TCP实现客户端远程控制服务器端及断线重连
  • 分布式锁—2.Redisson的可重入锁一
  • 75.继承计时器类 WPF例子 C#例子
  • 网络基础概述
  • Java多线程与高并发专题——HashMap 为什么是线程不安全的?
  • GIT的上传和下载
  • C 语言共用体:深入理解与实践】
  • 【音视频】图像基础概念
  • IO学习day2