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可选。提取的字符数。返回值:包含给定字符串的提取部分的新字符串。如果length是0或负数,则返回空字符串。
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方法】(一)