JavaScript中几个相似方法对比
一、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 = 0
console.log(anyString.substring(3,NaN));//indexEnd = NaN,则indexEnd = 0
console.log(anyString.substring(-2,3));//indexStart < 0,则indexStart = 0
console.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
// 输出bc
console.log(str.substr(1,2));
// 输出hi,start=7
console.log(str.substr(-3,2));//start < 0,则被看作 strLength + start,其中 strLength 为字符串的长度
// 输出hij
console.log(str.substr(-3));//start < 0,省略length
// 输出bcdefghij
console.log(str.substr(1));
// 输出ab start=0
console.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
// 输出a
console.log(str.substr(NaN, 1));//start非数字, start=0
二、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=0
console.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 > 数组长度
JavaScript中几个相似方法对比的更多相关文章
- JavaScript中Object.prototype.toString方法的原理
在JavaScript中,想要判断某个对象值属于哪种内置类型,最靠谱的做法就是通过Object.prototype.toString方法. ? 1 2 var arr = []; console.lo ...
- Jquery中$(document).ready()与传统JavaScript中的window.onload方法的区别(2016/8/3)
Jquery中$(document).ready()的作用类似于传统JavaScript中的window.onload方法,不过与window.onload方法还是有区别的. 1.执行时间 ...
- JavaScript中事件绑定的方法总结
最近收集了一些关于JavaScript绑定事件的方法,汇总了一下,不全面,但是,希望便于以后自己查看. JavaScript中绑定事件的方法主要有三种: 1 在DOM元素中直接绑定 2 JavaScr ...
- Javascript中alert</script>的方法
Javascript中alert</script>的方法: <%@ page language="java" import="java.util.*&q ...
- URL地址中中文乱码详解(javascript中encodeURI和decodeURI方法、java.net.URLDecoder.encode、java.net.URLDecoder.decode)
引言: 在Restful类的服务设计中,经常会碰到需要在URL地址中使用中文作为的参数的情况,这种情况下,一般都需要正确的设置和编码中文字符信息.乱码问题就此产生了,该如何解决呢?且听本文详细道来. ...
- JavaScript中this的使用方法总结
JavaScript中this的使用方法总结 在JavaScript中,this的使用分为四种场景,具体请参考阮一峰老师关于this的讲解 第一种情况是纯函数使用 var x =1 ; functio ...
- javaScript中的indexOf使用方法
JavaScript中的indexOf使用方法 概述 indexOf大小写敏感,其中的O要大写 对于字符串而言 indexOf返回字符串第一次出现的位置,若没有出现返回-1 1 var str = & ...
- Jquery中$(document).ready() 和 JavaScript中的window.onload方法 比较
Jquery中$(document).ready()的作用类似于传统JavaScript中的window.onload方法,不过与window.onload方法还是有区别的. 1.执行时间 win ...
- Javascript中定时器的使用方法
Javascript中定时器的使用方法 1.间隔定时器(每隔一段时间执行一次代码) 格式:setInterval(函数,时间) //时间单位是毫秒,每隔设置的时间执行函数里的内容一遍(一直执行) // ...
随机推荐
- memcache和memcached之间的区别和联系
memcache和memcached区别: Memcache是什么?Memcache是一个自由和开放源代码.高性能.分配的内存对象缓存系统.用于加速动态web应用程序,减轻数据库负载.它可以应对任意多 ...
- nodejs抓取数据二(列表解析)
这里做得比较暴力,没有分页取出数据解析,O(∩_∩)O哈哈~,居然没有被挂机.不过解析的坑特别多...不过大部分我想要的数据都拿到了. //解析列表数据 var http = require(&quo ...
- js中的 substring和substr方法
原文: http://www.cnblogs.com/chinafine/archive/2009/02/26/1398771.html 1.substring 方法 定义和用法 substring ...
- iOS 之 内存检查instrument
经常听见iOS开发instrument是一个内存检查工具,但是,没想到,它是集成在xcode里面的,而且打开一看,感觉功能非常强大. 打开方式是 product -> profile 头一次运行 ...
- Mysql中各种常见数据库存储引擎对比
- js原生设计模式——2面向对象编程之继承—多继承
1.单对象克隆 <!DOCTYPE html><html lang="en"><head> <meta charset=" ...
- swift 中使用OC第三方库(以AFNetworking为例)
首先呢 把你需要的第三方库导入到你的项目中来 具体怎么导入 这不是这篇的重点 看上一篇 废话不多 直接上 (1)在项目中直接建一个 oc 的控制器 然后xcode会提醒你 要不要建造桥接文 ...
- BNU Online Judge-34776-What does the fox say?
题目链接 http://www.bnuoj.com/bnuoj/problem_show.php?pid=34776 题意: fox 的叫声 例如测试用例 输入 toot woof wa ow ow ...
- js与AMD模块加载
目的: 了解AMD规范与CMD规范,写一个模块加载器雏形. 基本概念: AMD是异步模块定义规范,而CMD是通用模块定义规范.其他的还有CommonJS Modules规范. 对于具体的规范,可以参考 ...
- STL内存管理
1. 概述 STL Allocator是STL的内存管理器,也是最低调的部分之一,你可能使用了3年stl,但却不知其为何物. STL标准如下介绍Allocator the STL includes s ...