JavaScript中几个相似方法对比

一、substring与substr


substring


substr


概述

返回字符串两个索引之间(或到字符串末尾)的子串 返回字符串从指定位置开始到指定长度的子串

语法


参数


indexStart:一个 0 到字符串长度之间的整数

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


start:开始提取字符的位置,可为负值

length:可选。提取的字符数

描述
1. indexStart = indexEnd,返回一个空字符串

2. indexStart > indexEnd,则效果是两个参数调换了一样

3. 省略 indexEnd,提取字符一直到字符串末尾

4. 任一参数 < 0 或为 NaN,则被当作 0

5. 任一参数 > strLength(字符串长度),则被当作strLength


1. start < 0,则被看作 strLength + start(从字符串倒数算起)

2. start < 0 && abs(start) > strLength,则start = 0

3. start >= strLength,返回一个空字符串

4. 任意参数为 NaN,则被当作 0

5. length <= 0,返回一个空字符串

代码
在线执行

1)substring描述

返回字符串两个索引之间(或到字符串末尾)的子串。

var anyString = "Mozilla";//字符串长度为7// 输出 "Moz"console.log(anyString.substring(0,3));
console.log(anyString.substring(3,0));//indexStart > indexEnd,则像两个参数对换console.log(anyString.substring(3,-3));//indexEnd < 0,则indexEnd = 0console.log(anyString.substring(3,NaN));//indexEnd = NaN,则indexEnd = 0console.log(anyString.substring(-2,3));//indexStart < 0,则indexStart = 0console.log(anyString.substring(NaN,3));//indexStart = NaN,则indexStart = 0// 输出 "lla"console.log(anyString.substring(4,7));
console.log(anyString.substring(7,4));//indexStart > indexEnd,则像两个参数对换,同上// 输出 ""console.log(anyString.substring(4,4));//indexStart = indexEnd// 输出 "Mozilla"console.log(anyString.substring(0,7));
console.log(anyString.substring(0,10));//indexEnd > anyString.length,indexEnd=anyString.length。console.log(anyString.substring(0));//省略 indexEnd,提取字符一直到字符串末尾

2)substr描述

返回字符串从指定位置开始到指定长度的子串。

var str = "abcdefghij";//长度为10// 输出bcconsole.log(str.substr(1,2));// 输出hi,start=7console.log(str.substr(-3,2));//start < 0,则被看作 strLength + start,其中 strLength 为字符串的长度// 输出hijconsole.log(str.substr(-3));//start < 0,省略length// 输出bcdefghijconsole.log(str.substr(1));// 输出ab start=0console.log(str.substr(-20,2)); //abs(start) > 字符串的长度,start=0// 输出""console.log(str.substr(20,2));  //start >= 字符串的长度,输出空字符串// 输出""console.log(str.substr(1,0));
console.log(str.substr(1,-5));//length <= 0,返回一个空字符串console.log(str.substr(1,NaN));//end非数字, end=0// 输出aconsole.log(str.substr(NaN, 1));//start非数字, start=0

二、slice与splice


slice


splice


概述


将数组的一部分的浅拷贝, 返回到从开始到结束(结束不包括)选择的新数组对象

原始数组不改变


通过删除现有元素和/或添加新元素来更改数组的内容

原始数组会改变


语法


参数


begin:可选,开始提取的索引(从0开始),可为负值

end:可选,结束提取的索引(包含begin,不包含end),可为负值


start:开始修改的索引(从0开始),可为负值

deleteCount:可选,要移除的数组元素的个数

item1,item2...:可选,要添加进数组的元素,从start位置开始

返回
一个含有提取元素的新数组


由被删除的元素组成的一个数组

如果没有删除元素,则返回空数组。

描述
1. 原始数组没有修改,浅复制了原数组的元素

2. 任何参数为负数,改变计算方式,从数组倒数算起

3. 任何参数为NaN,则被当作 0

4. start 省略,start=0

5. start > end,输出空数组


1. 原始数组被修改,在指定位置可添加任意多个元素

2. start <0 为负数,改变计算方式,从数组倒数算起

3. start 或 deleteCount 为NaN,则被当作 0

4. start 省略,输出空数组

5. deleteCount > 数组长度,则deleteCount=数组长度

代码
在线执行

1) slice描述

将数组的一部分的浅拷贝, 返回到从开始到结束(结束不包括)选择的新数组对象,原始数组不改变。

var fruits = [‘Banana‘, ‘Orange‘, ‘Lemon‘, ‘Apple‘, ‘Mango‘];var citrus = fruits.slice(1, 3);//包含1 不包含3// 输出 [‘Banana‘, ‘Orange‘, ‘Lemon‘, ‘Apple‘, ‘Mango‘]console.log(fruits);//原始数组没有修改// 输出 [‘Orange‘, ‘Lemon‘]console.log(citrus);//浅复制了原数组的元素// 输出 [‘Banana‘, ‘Orange‘, ‘Lemon‘, ‘Apple‘, ‘Mango‘]console.log(fruits.slice());// start 省略,start=0// 输出 [‘Apple‘, ‘Mango‘]console.log(fruits.slice(-2));// start < 0,从数组倒数算起// 输出 [‘Apple‘]console.log(fruits.slice(-2, -1));// start < 0 && end < 0,从数组倒数算起,倒数第二个元素到倒数第一个元素// 输出 [‘Orange‘, ‘Lemon‘, ‘Apple‘]console.log(fruits.slice(1, -1));// 输出 []console.log(fruits.slice(2, 1));// start > end,输出空数组// 输出 [‘Banana‘]console.log(fruits.slice(NaN, 1));// start非数字,start=0// 输出 []console.log(fruits.slice(1, NaN));// end非数字,end=0

2) splice描述

通过删除现有元素和/或添加新元素来更改数组的内容,原始数组会改变。

var myFish = ["angel", "clown", "mandarin", "sturgeon"];// 输出 []console.log(myFish.splice(2, 0, "drum"));// 空,没有删除元素console.log(myFish);//原数组被改变 myFish=["angel", "clown", "drum", "mandarin", "sturgeon"]// 输出 ["drum"]console.log(myFish.splice(2, 1));// 有删除元素 myFish=["angel", "clown", "mandarin", "sturgeon"]myFish.splice(2, 1, "splice", "parrot");
console.log(myFish);//添加两个元素 myFish=["angel", "clown", "splice", "parrot", "sturgeon"]// 输出 ["parrot", "sturgeon"]console.log(myFish.splice(-2));// start < 0,从数组倒数算起 myFish=["angel", "clown", "splice"]// 输出 []console.log(myFish.splice(-2, -1));// start < 0 && deleteCount < 0,空数组console.log(myFish.splice(1, -1));//空数组console.log(myFish.splice(1, NaN));// deleteCount非数字,deleteCount=0console.log(myFish.splice());// start省略// 输出 ["angel"]console.log(myFish.splice(NaN, 1));// start非数字,start=0  myFish=["clown", "splice"]// 输出 ["clown", "splice"]console.log(myFish.splice(0, 10));// deleteCount > 数组长度

时间: 2024-10-09 03:50:59

JavaScript中几个相似方法对比的相关文章

JavaScript中Object.prototype.toString方法的原理

在JavaScript中,想要判断某个对象值属于哪种内置类型,最靠谱的做法就是通过Object.prototype.toString方法. ? 1 2 var arr = []; console.log(Object.prototype.toString.call(arr)) //"[object Array]" 本文要讲的就是,toString方法是如何做到这一点的,原理是什么. ECMAScript 3 在ES3中,Object.prototype.toString方法的规范如下:

URL地址中中文乱码详解(javascript中encodeURI和decodeURI方法、java.net.URLDecoder.encode、java.net.URLDecoder.decode)

引言: 在Restful类的服务设计中,经常会碰到需要在URL地址中使用中文作为的参数的情况,这种情况下,一般都需要正确的设置和编码中文字符信息.乱码问题就此产生了,该如何解决呢?且听本文详细道来. 1.  问题的引出 在Restful的服务设计中,查询某些信息的时候,一般的URL地址设计为: get /basic/service? keyword=历史 , 之类的URL地址. 但是,在实际的开发和使用中,确是有乱码情况的发生,在后台的读取keyword信息为乱码,无法正确读取. 2. 乱码是如

JavaScript中事件绑定的方法总结

最近收集了一些关于JavaScript绑定事件的方法,汇总了一下,不全面,但是,希望便于以后自己查看. JavaScript中绑定事件的方法主要有三种: 1 在DOM元素中直接绑定 2 JavaScript代码中直接绑定 3 绑定事件监听函数 一.在DOM元素中直接绑定 也就是直接在html标签中通过 onXXX=“” 来绑定.举个例子: <input type="button" value="点我呦" onclick="alert("he

Jquery中$(document).ready() 和 JavaScript中的window.onload方法 比较

Jquery中$(document).ready()的作用类似于传统JavaScript中的window.onload方法,不过与window.onload方法还是有区别的. 1.执行时间 window.onload必须等到页面内包括图片的所有元素加载完毕后才能执行. $(document).ready()是DOM结构绘制完毕后就执行,不必等到加载完毕. 2.编写个数不同 window.onload不能同时编写多个,如果有多个window.onload方法,只会执行一个(最后一个)       

JavaScript中With 语句使用方法实例

内容导读: 有了 With 语句,在存取对象属性和方法时就不用重复指定参考对象,在 With 语句块中,凡是 JavaScript 不识别的属性和方法都和该语句块指定的对象有关.With 语句的语法格式如下所示: With Object { Statements } 对象指明了当语句组中对象缺省时的参考对象,这里我们用较为熟悉的 Document 对象对 With 语句举例.例如 当使用与 Document 对象有关的 write( )或 writeln( )方法时,往往使用如下形式: docu

javascript中call和apply方法

转:http://www.cnblogs.com/ArthurPatten/p/3335912.html 我们可以将call和apply看做是某个对象的方法,通过调用方法的形式来间接调用函数.call和apply的第一个实参是要调用函数的母对象,它是调用上下文,在函数体内通过this来获得对它的引用. 例如,如果要想以对象o的方法来调用函数f,可以按如下的方式使用call和apply方法: f.call(o); f.apply(o); 可以按如下的代码来理解: o.m = f; //将f存储为o

Javascript中String的valueOf方法

今天看了Javascript的基础教程,其中说了一个关于typeof的问题.typeof运算符的作用就是返回一个变量的类型,如果变量是一个数字,则返回number. 如果是字符串,则返回string, 布尔类型则返回boolean, 函数则返回function, 如果变量是null或者其他Javascript对象,就返回object. 未定义就返回undefined. 如果要判断变量存在,而且是一个字符串的话:给出的判断语句是: if( (typeof unknownVariable != "u

JavaScript中的indexOf使用方法

JavaScript中的indexOf使用方法 1.概述 indexOf大小写敏感,其中的O要大写 2.对于字符串而言 indexOf返回字符串第一次出现的位置,若没有出现返回-1 1 var str = "hello world"; 2 alert(str.indexOf("o"))//显示4 3 alert(str.indexOf("i"))//显示-1 3.对于数组而言 indexOf返回某个值在数组中第一次出现的索引,若没有出现返回-1

javascript中的数组排序——sort()方法

在JavaScript中的Array对象提供了一个sort()方法用于对数组中的元素进行排序. sort()方法简介 JavaScript中数组的sort()方法主要用于对数组的元素进行排序.其中,sort()方法有一个可选参数.但是,此参数必须是函数. 数组在调用sort()方法时,如果没有传参将按字母顺序(字符编码顺序)对数组中的元素进行排序,如果想按照其他标准进行排序,就需要进行传一个参数且为函数,该函数要比较两个值,并且会返回一个用于说明这两个值的相对顺序的数字. Array.sort(