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 + start strLength为字符串的长度(例如,如果 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方法】(一)

相关推荐
奋斗吧程序媛几秒前
删除VSCode上 origin/分支名,但GitLab上实际上不存在的分支
前端·vscode
IT女孩儿11 分钟前
JavaScript--WebAPI查缺补漏(二)
开发语言·前端·javascript·html·ecmascript
m0_748256562 小时前
如何解决前端发送数据到后端为空的问题
前端
请叫我飞哥@2 小时前
HTML5适配手机
前端·html·html5
@解忧杂货铺4 小时前
前端vue如何实现数字框中通过鼠标滚轮上下滚动增减数字
前端·javascript·vue.js
F-2H6 小时前
C语言:指针4(常量指针和指针常量及动态内存分配)
java·linux·c语言·开发语言·前端·c++
gqkmiss6 小时前
Chrome 浏览器插件获取网页 iframe 中的 window 对象
前端·chrome·iframe·postmessage·chrome 插件
m0_748247558 小时前
Web 应用项目开发全流程解析与实战经验分享
开发语言·前端·php
m0_748255029 小时前
前端常用算法集合
前端·算法
真的很上进9 小时前
如何借助 Babel+TS+ESLint 构建现代 JS 工程环境?
java·前端·javascript·css·react.js·vue·html