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

js版本之ES5特性简述【String、Function、JSON、其他】(二)

目录

String相关方法

string.charAt()

string.charCodeAt()

string.concat()

string.match()

string.search()

string.replace()

string.split()

string.trim()

string.slice()

string.substr()

string.substring()

Function相关方法

arguments.length

function.bind()、function.call()、function.apply() 

JSON相关方法

JSON.parse()

JSON.stringify()

其他相关方法

Date.now()

date.toJSON()

Math.min()

Math.max()

Math.random() 

number.toFixed()


String相关方法

string.charAt()

string.charAt()方法从一个字符串中返回指定的字符。

语法:【 str.charAt(index) 

参数:index一个介于0 和字符串长度减1之间的整数。 (0~length-1)如果没有提供索引,charAt() 将使用0。

返回值:表示指定字符串索引处的字符; 如果index超出范围,则为空字符串

string.charCodeAt()

string.charCodeAt()访问字符串中特定字符,返回给定位置的字符的字符编码

注:【 方法返回0到65535之间的整数,表示给定索引处的UTF-16代码单元 (在 Unicode 编码单元表示一个单一的 UTF-16 编码单元的情况下,UTF-16 编码单元匹配 Unicode 编码单元。但在——例如 Unicode 编码单元 > 0x10000 的这种——不能被一个 UTF-16 编码单元单独表示的情况下,只能匹配 Unicode 代理对的第一个编码单元) 。如果你想要整个代码点的值,使用 codePointAt()。】

语法:【 str.charCodeAt(index) 

参数:index一个大于等于 0,小于字符串长度的整数。如果不是一个数值,则默认为 0。

返回值:返回值是一表示给定索引处(String中index索引处)字符的 UTF-16 代码单元值的数字;如果索引超出范围,则返回NaN。

'ABC'.charCodeAt(0); // returns 65

string.concat()

string.concat()方法将一个或多个字符串与原字符串连接合并,形成一个新的字符串并返回。

语法:【 string.concat(string1, string2, ..., stringX) 

参数:string1, string2, ..., stringX和原字符串连接的多个字符串。

返回值:所有参数string组合成的新的string

string.match()

string.match()当一个字符串与一个正则表达式匹配时, match()方法检索匹配项。

语法:str.match(regexp) 

参数:regexp一个正则表达式正则表达式对象。如果传入一个非正则表达式对象,则会隐式地使用new RegExp(obj) 将其转换为一个RegExp。如果你未提供任何参数,直接使用 match() ,那么你会得到一个包含空字符串的Array:[""] 。

返回值:array如果字符串匹配到了表达式,会返回一个数组,数组的第一项是进行匹配完整的字符串,之后的项是用圆括号捕获的结果。如果没有匹配到,返回null

示例:A-E、a-e 的所有字母将会作为一个数组的元素返回。 

var str = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz';
var regexp = /[A-E]/gi;
var matches_array = str.match(regexp);

console.log(matches_array);
// ['A', 'B', 'C', 'D', 'E', 'a', 'b', 'c', 'd', 'e']

string.search()

string.search()查找匹配的字符串,返回匹配项的索引,没有找到,返回 -1【用于搜索正则表达式和给定字符串对象之间的匹配】

语法:str.search(regexp) 

参数:regexp一个正则表达式(regular expression)对象。如果传入一个非正则表达式对象,则会使用 new RegExp(obj) 隐式地将其转换为正则表达式对象。

返回值:如果匹配成功,则 search() 返回正则表达式在字符串中首次匹配项的索引。否则,返回 -1。

var str = "hey JudE";
var re = /[A-Z]/g;
var re2 = /[.]/g;
console.log(str.search(re)); // returns 4, 返回第一个匹配上的“J”索引
console.log(str.search(re2)); // returns -1 没有找到 '.'

string.replace()

string.replace()方法返回一个由替换值替换一些或所有匹配的模式后的新字符串。模式可以是一个字符串或者一个正则表达式,替换值可以是一个字符串或者一个每次匹配都要调用的函数。【注意:原字符串不会改变。】

语法:str.replace(regexp|substr, newSubstr|function)

参数:

  • regexp (pattern)一个RegExp对象或者其字面量。该正则所匹配的内容会被第二个参数的返回值替换掉。
  • substr (pattern)一个要被newSubStr替换的字符串字符串字符串。其被视为一整个字符串,而不是一个正则表达式。仅仅是第一个匹配会被替换。
  • newSubstr (replacement) 用于替换掉第一个参数在原字符串中的匹配部分的字符串。该字符串中可以内插一些特殊的变量名。
  • function (replacement)一个用来创建新子字符串的函数,该函数的返回值将替换掉第一个参数匹配到的结果。

返回值:一个部分或全部匹配由替代模式所取代的新的字符串。

const str = "Hello, world!";
const newStr = str.replace("l", "A");
console.log(newStr); // 输出: HeAlo, JavaScript!

在下面这个示例中,函数 (match, offset, string) 会被调用两次,每次匹配到 "world" 时都会将其转换为大写。 

  • match:当前匹配的子字符串。
  • offset:匹配到的子字符串在原字符串中的位置。
  • string:原字符串。
const str = "Hello, world! Welcome to the world of programming.";
const newStr = str.replace(/world/g, (match, offset, string) => {
  return match.toUpperCase();
});
console.log(newStr); // 输出: Hello, WORLD! Welcome to the WORLD of programming.

string.split()

string.split()基于指定的分隔符将一个字符串分割成多个字符串,将结果放在一个数组中,并返回

语法:【 str.split(separator,limit)

参数:separator指定表示每个拆分应发生的点的字符串。separator可以是一个字符串正则表达式

  • 如果纯文本分隔符包含多个字符,则必须找到整个字符串来表示分割点。
  • 如果在str中省略或不出现分隔符,则返回的数组包含一个由整个字符串组成的元素。
  • 如果分隔符为空字符串,则将str原字符串中每个字符的数组形式返回。

  limit一个整数(可选),限定返回的分割片段数量。当提供此参数时,split 方法会在指定分隔符的每次出现时分割该字符串,但在限制条目已放入数组时停止。如果在达到指定限制之前达到字符串的末尾,它可能仍然包含少于限制的条目。新数组中不返回剩下的文本。

返回值:在给定字符串中出现分隔符的每个点处拆分的字符串数组。

var str = '哈哈/嘿嘿/啦啦/咕咕';
var arr = str.split('/', 2);
console.log(arr) // ["哈哈,"嘿嘿"]

string.trim()

string.trim()方法会从一个字符串的两端删除空白字符。在这个上下文中的空白字符是所有的空白字符 (space, tab, no-break space 等) 以及所有行终止符字符(如 LF,CR)。

语法:str.trim()

描述:trim() 方法并不影响原字符串本身,它返回的是一个新的字符串

string.slice()

string.slice()方法提取一个字符串的一部分,并返回一新的字符串。

语法:string.slice(start, end)

参数:

  • start 参数可选,表示起始索引位置,默认为 0。如果为负数,则表示从字符串末尾的索引位置开始计算
  • end 参数可选,表示结束索引位置,默认为字符串的长度。如果为负数,则表示从字符串末尾的索引位置开始计算

注:返回的子字符串包括 start 索引位置的字符,但不包括 end 索引位置的字符(包左不包右)。如果 start 大于等于 end,则返回一个空字符串。原始字符串不会被修改。

返回值:返回一个从原字符串中提取出来的新字符串

const str = 'Hello, World!';

console.log(str.substring(7));      // 输出: "World!"
console.log(str.substring(7, 12));  // 输出: "World"
console.log(str.substring(-6));     // 输出: "Hello, World!"
console.log(str.substring(7, -1));  // 输出: "Hello, World"

string.substr()

string.substr()方法返回一个字符串中从指定位置开始到指定字符数的字符。

语法:【 str.substr(start,length) 

参数:start开始提取字符的位置。如果为负值,则被看作strLength + startstrLength为字符串的长度(例如,如果 start为-3,则被看作strLength + (-3))length可选。提取的字符数

返回值:包含给定字符串的提取部分的新字符串。如果length0或负数,则返回空字符串。

var str = 'abcdefghij';

console.log('(1, 2): '   + str.substr(1, 2));   // '(1, 2): bc'
console.log('(-3, 2): '  + str.substr(-3, 2));  // '(-3, 2): hi'
console.log('(-3): '     + str.substr(-3));     // '(-3): hij'
console.log('(1): '      + str.substr(1));      // '(1): bcdefghij'
console.log('(-20, 2): ' + str.substr(-20, 2)); // '(-20, 2): ab'
console.log('(20, 2): '  + str.substr(20, 2));  // '(20, 2): '

string.substring()

string.substring()方法返回一个字符串在开始索引到结束索引之间的一个子集, 或从开始索引直到字符串的末尾的一个子集。

语法:【 str.substring(indexStart, indexEnd) 

参数:indexStart一个 0 到字符串长度之间的整数。indexEnd可选。一个 0 到字符串长度之间的整数。

返回值:包含给定字符串的提取部分的新字符串。

注:如果 indexStart 大于 indexEnd,则 substring执行效果就像两个参数调换了一样。例如,str.substring(1, 0) == str.substring(0, 1)

Function相关方法

arguments.length

arguments.length属性包含传递给该函数的参数的数量。

语法:【 arguments.length 

描述:arguments.length表示的是实际上向函数传入了多少个参数,这个数字可以比形参数量大,也可以比形参数量小(形参数量的值可以通过Function.length获取到)

function.bind()、function.call()、function.apply() 

bind、call、apply三个方法的具体介绍请看另一篇文章:call、apply、bind三者的区别

function.bind()方法创建一个新的函数, 当被调用时,将其this关键字设置为提供的值,在调用新函数时,在任何提供之前提供一个给定的参数序列。

function.call()方法调用一个函数, 其具有一个指定的this值和分别地提供的参数(参数的列表)。

注意:该方法的作用和 apply() 方法类似,只有一个区别,就是call()方法接受的是若干个参数的列表,而apply()方法接受的是一个包含多个参数的数组

function.apply()方法调用一个函数, 其具有一个指定的this值,以及作为一个数组(或类似数组的对象)提供的参数。

注意:call()方法的作用和 apply() 方法类似,只有一个区别,就是 call()方法接受的是若干个参数的列表,而apply()方法接受的是一个包含多个参数的数组

JSON相关方法

JSON.parse()

JSON.parse()方法用来解析JSON字符串,构造由字符串描述的JavaScript值或对象。提供可选的reviver函数用以在返回之前对所得到的对象执行变换(操作)。【简意:解析字符串为 JSON 对象】

语法: JSON.parse(text[, reviver]) 用“[ ]”括起来的参数表示为可选参数

参数:

  • text:必需, 一个有效的 JSON 字符串。
  • reviver: 可选,一个转换结果的函数, 将为对象的每个成员调用此函数。

返回值:Object对应于给定JSON text

JSON.stringify()

JSON.stringify()方法是将一个JavaScript值(对象或者数组)转换为一个 JSON字符串,如果指定了replacer是一个函数,则可以替换值,或者如果指定了replacer是一个数组,可选的仅包括指定的属性。【简意:解析 JSON 对象为字符串】

语法: JSON.stringify(value[, replacer[, space]]) 用“[ ]”括起来的参数表示为可选参数

参数:

  • value 必需 对象或数组,需要转换成json字符串的数据
  • replacer 可选 函数
  • space 可选 文本添加缩进、空格和换行符,小于等于10的数字(如大于10按10展示)或者是代表缩进、空格和换行符的转义字符,例如'\t'

返回值:一个表示给定值的JSON字符串。

let arr = ['Lqw', 23, 'female'];
JSON.stringify(
    arr, 
    function (key, value) {
        if (typeof value === 'string') {
            return value.toUpperCase();
        }
        return value;
    },4);

结果:["LQW", 23, "FEMALE"]

其他相关方法

Date.now()

Date.now()方法返回从1970年1月1日00:00:00 UTC开始经过的毫秒数。【返回当前时间戳】

语法: Date.now()​​​​​​​ 

返回值:Number表示从unix纪元经过的毫秒。

date.toJSON()

date.toJSON()方法返回 Date 对象的字符串形式。

语法: dateObj.toJSON() 

返回值:给定日期的字符串表示形式。

var jsonDate = (new Date()).toJSON();
var backToDate = new Date(jsonDate);

console.log(jsonDate); //2015-10-26T07:46:36.611Z

Math.min()

Math.min()返回零个或更多个数值的最小值。

语法: Math.min(num1,num2…numN) 

参数:num1, num2, ...一组数值

返回值:给定数值中最小的数。如果任一参数不能转换为数值,则返回NAN。

Math.max()

Math.max() 函数返回一组数中的最大值。

语法: Math.min(num1,num2…numN) 

参数:num1, num2, ...一组数值

返回值:返回给定的一组数字中的最大值。如果给定的参数中至少有一个参数无法被转换成数字,则会返回NAN。

// 获取数组中最大值
var arr = [1,2,3];
var max = arr.reduce(function(a, b) {
    return Math.max(a, b);
});

Math.random() 

Math.random() 函数返回一个浮点,  伪随机数在范围[0,1),也就是说,从0(包括0)往上,但是不包括1(排除1),然后您可以缩放到所需的范围。实现将初始种子选择到随机数生成算法;它不能被用户选择或重置。【返回大于 0 小于 1 的一个随机数】

语法: Math.random()​​​​​​​ 

返回值:一个浮点型伪随机数字在0(包括0)和1(不包括)之间

// 随机选择数组中的一个元素:
let arr = [1, 2, 3, 4, 5];
let randomElement = arr[Math.floor(Math.random() * arr.length)];
// 生成一个随机颜色值:
let randomColor = `rgb(${Math.random() * 255}, ${Math.random() * 255}, ${Math.random() * 255})`;

number.toFixed()

number.toFixed()方法使用定点表示法来格式化一个数【按照指定的小数位返回数值的字符串表示】

语法: numObj.toFixed(digits)​​​​​​​ 

参数:digits小数点后数字的个数;介于 0 到 20 (包括)之间,实现环境可能支持更大范围。如果忽略该参数,则默认为 0。

返回值:所给数值的定点数表示法的字符串形式。

var numObj = 12345.6789;

numObj.toFixed();       // Returns '12346': note rounding, no fractional part
numObj.toFixed(1);      // Returns '12345.7': note rounding
numObj.toFixed(6);      // Returns '12345.678900': note added zeros

 上一章:js版本之ES5特性简述【Object、Array方法】(一)


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

相关文章:

  • 11 —— 打包模式的应用
  • tcpdump抓包 wireShark
  • macOS安装nvm node
  • 鸿蒙学习高效开发与测试-测试工具(5)
  • 服务机器人三甲坎德拉:用智能化开启售后服务新篇章
  • uiautomator案例
  • MySQL系列之身份鉴别(安全)
  • Unet++改进35:添加FastKANConv2DLayer(2024最新改进方法)
  • 本地项目提交到gitee
  • 如何高效集成YS网店客户和组织映射数据到MongoDB
  • PHP导出EXCEL含合计行,设置单元格格式
  • Kafka 数据倾斜:原因、影响与解决方案
  • STM32-- 调试 -日志输出
  • vue3的宏到底是什么东西?
  • C++ 中数组作为参数传递时,在函数中使用sizeof 为什么无法得到数组的长度
  • 【MATLAB源码-第222期】基于matlab的改进蚁群算法三维栅格地图路径规划,加入精英蚁群策略。包括起点终点,障碍物,着火点,楼梯。
  • Linux探秘坊-------1.系统核心的低语:基础指令的奥秘解析(1)
  • VSCode 使用技巧
  • Java开发经验——并发工具类库线程安全问题
  • IP转发流程
  • Elasticsearch搜索流程及原理详解
  • Java Web后端项目的特点和组成部分
  • 【element-tiptap】Tiptap编辑器核心概念----内容、扩展与词汇
  • 基于NVIDIA NIM 平台打造智能AI知识问答系统
  • 【JAVA 笔记】12 带有数据库文件的完整的JDBC访问例子,命令行界面
  • C++适配器模式之可插入适配器的实现模式和方法