真是恨透了这些类似于substring substr slice 要么长得像,要么就功能相近的方法。。。

1⃣️string

1.substring(start开始位置的索引,end结束位置索引) 截取字符串

  截取的位置不包含结束位置的字符,只写start表示从开始位置截取到最后,end>start时,会默认以小的参数为开始位置的索引

var str='abcdefg';
str.substring(1) //bcdefg
str.substring(1,3) //bc
str.substring(3,1) //bc

  输入负值时将负值变为0,并以较小数字为截取开始位置的索引

str.substing(-1,1)  等价于str.substring(0,1) //a
str.substring(1,-2) 等价于str.substring(0,1) //a

2.slice(start开始位置索引,end结束位置索引)截取字符串

  基本和substring相似,但当end>start时,返回空字符串""

var str='abcdefg';
str.slice(1)   //bcdefg
str.slice(1,3)  // bc
str.slice(3,1) // ""

  区别在参数为负数时,slice是负值与字符串的长度相加,当负值的绝对值大于字符串长度时,值变为0,当第二个参数的绝对值大于字符串长度时,返回空字符串""

str.slice(-1)    等价于str.slice(6)    //g
str.slice(1,-2)  等价于str.slice(1,5)  //bcde
str.slice(-2,-1) 等价于str.slice(5,6)  //f

str.slice(-10) 等价于str.substring(0)  //abcdefg
str.slice(0,-10) // ""`

3.substr(start开始位置索引,end需要返回的字符个数)截取字符串

只传入start时,默认从start开始截取到最后一个

var str='abcdefg';
str.substr(1) //bcdefg
str.substr(1,1) //b

输入负值时 start参数与字符串的长度相加 ,end为负时参数变为0,也就是返回空字符串""

 str.substr(-1) 等价于str.substr(6)//g
 str.substr(-2,-3) // ''

4.charAt(index)和chatCodeAt(index)

该方法用于返回指定index处的字符,但当index为负数或者大于字符串长度时,返回空字符串""

var str='abcdefg';
str.charAt(2) // c
str.charAt(-1) // ""
str.charAt(10) // ""

5.chatCodeAt(index)

该方法用于返回指定位置的字符的 Unicode 编码。这个返回值是 0 - 65535 之间的整数。如果 index 是负数,或大于等于字符串的长度,则 charCodeAt() 返回 NaN。

var str='abcdefg';
str.charCodeAt(1) //98
str.charCodeAt(-1) //NaN
str.charCodeAt(10) //NaN

6.indexOf(string)

该方法返回字符串内第一次出现子字符串的位置。如果没有找到子字符串,则返回-1。

var str='abcdefga'
str.indexOf('a')  // 0
str.indexOf('h') //-1

7.lastIndexOf(string) 倒叙查找

与indexOf相反,该方法返回字符串内最后一次出现子字符串的位置。相同的是,如果没有找到子字符串,则返回-1。

var str='abcdefga'
str.lastIndexOf('a')  // 7
str.lastIndexOf('h') //-1

8.split(separator分隔符,howmany分割返回数量)

该方法用于方法用于把一个字符串分割成字符串数组。如果把空字符串 ("") 用作 separator,那么 stringObject 中的每个字符之间都会被分割。

"hello".split("")       // ["h", "e", "l", "l", "o"]
"hello".split("", 3)    // ["h", "e", "l"]
("2:3:4:5").split(":") //["2", "3", "4", "5"]
("|a|b|c").split("|") //["", "a", "b", "c"]

9.replace(regexp,replacement)

该方法用于在字符串中用一些字符替换另一些字符,或替换一个与正则表达式匹配的子串。

var str='abcdefg'
str.replace(/a/,'12345') // '12345bcdefg'

10.search(regexp)

该方法用于检索字符串中指定的子字符串,或检索与正则表达式相匹配的子字符串。返回第一个与 regexp 相匹配的子串的起始位置。

var str='abcdefg'
str.search(/cde/) // 2

11.match(regexp/str)

该方法用于在字符串内检索指定的值,或找到一个或多个正则表达式的匹配,并返回一个存储了该值的数组

var str='abcdefg'
str.match('bcd')  //["bcd"]

12. toLowerCase

该方法返回一个字符串,该字符串中的字母被转换成小写。

var str="Hello World!"
str.toLowerCase()  //"hello world!"

13. toUpperCase

该方法返回一个字符串,该字符串中的所有字母都被转换为大写。

var str="Hello World!"
str.toUpperCase()  //"HRLLO WORLD!"

14.concat()

该方法用于连接两个或多个字符串

var str1="Hello "
var str2="world!"
str1.concat(str2) // "Hello World!"

2⃣️array 

 1. push() 

向数组的末尾添加一个或更多元素,并返回新的长度。

var arr = [1,2,3]
console.log(arr.push(4)) // 4
console.log(arr) // [1,2,3,4]

2. unshift()

向数组的开头添加一个或更多元素,并返回新的长度。

var arr = [1,2,3]
console.log(arr.unshift(4)) // 4
console.log(arr) // [4,1,2,3]

3.shift()

删除并返回数组的第一个元素

var arr = [1,2,3]
console.log(arr.shift()) // 1
console.log(arr) // [2,3]

4. pop()  

删除并返回数组的最后一个元素

var arr = [1,2,3]
console.log(arr.prop()) // 3
console.log(arr) // [1,2]

6. join()     

把数组的所有元素放入一个字符串。元素通过指定的分隔符进行分隔。

var arr = [1,2,3]
arr.join('+') //"1+2+3"

7.toString()

该方法可把数组转换为字符串,返回值与没有参数的 join() 方法返回的字符串相同。

var arr = [1,2,3]
arr.toString() // "1,2,3"

8.concat()

该方法可以连接两个或更多的数组,并返回结果。

var arr1 = [1,2,3]
var arr2 = [4,5,6]
arr1.concat(arr2) //[1,2,3,4,5,6] 

9.slice(start,end)

该方法可从已有的数组中返回选定的元素。(返回一个新的数组,包含从 start 到 end (不包括该元素)的 arrayObject 中的元素。),不传参返回整个数组,传入负值(等价于负值+数组长度的位置开始)

该方法并不会修改数组,而是返回一个子数组。如果想删除数组中的一段元素,应该使用方法 Array.splice()。

var arr = [1,2,3]
arr.slice(1) // [2,3]
arr.slice(0,2) // [1,2]
arr.slice() // [1,2,3]
arr.slice(-1) // [3]

10.splice()

之所以给它加个颜色,是因为这个方法功能多,但也特容易搞混,因为它可以传三类参数,传入的参数个数不同,该方法所实现的功能也不同

参数1 添加/删除 的起始位置

参数2 要删除的项目数量。如果设置为 0,则不会删除项目。

参数3 向数组添加的新项目。(可以添加多个)

1)单纯的删除元素 (这时不用传参数3,用参数1、2控制即可)返回的是一个包含被删除元素的数组,如果参数1为负值,则相当于从参数1+数组长度的位置开始删除。

var arr = [1,2,3,4,5]
arr.splice(1,2) // [2,3]
arr.splice(-2,2) // [4,5]

2)单纯的添加元素 (这时参数2要传入0)返回值是一个空数组,如果参数1为负值,则相当于从参数1+数组长度的位置开始添加。

var arr = [1,2,3,4,5]
arr.splice(1,0,6);  // []
console.log(arr )  // [1, 6, 2, 3, 4, 5]
arr.splice(-1,0,6); // []
console.log(arr ) // [1,2, 3, 4, 6,5]

3)  删除元素并添加元素 返回值是包含新被删除元素的一个数组,如果参数1为负值,则相当于从参数1+数组长度的位置开始删除/添加。

var arr = [1,2,3,4,5]
arr.splice(1,3,6,7,8);  // [2,3,4]
console.log(arr )  // [1, 6, 7, 8, 5]
arr.splice(-1,3,6,7,8); // [5]
console.log(arr ) // [1, 2,3,4,6,7,8]

11. reverse()

该方法用于颠倒数组中元素的顺序。并返回颠倒顺序后的数组

var arr = [1,2,3,4,5]
arr.reverse() // [5, 4, 3, 2, 1]

12.sort()

该方法用于对数组的元素进行排序。

如果调用该方法时没有使用参数,将按字母顺序对数组中的元素进行排序,说得更精确点,是按照字符编码的顺序进行排序。要实现这一点,首先应把数组的元素都转换成字符串(如有必要),以便进行比较。

var arr = ["George","John","Thomas","James","Adrew","Martin"]
arr.sort() //["Adrew", "George", "James", "John", "Martin", "Thomas"] 

如果想按照其他标准进行排序,就需要提供比较函数,该函数要比较两个值,然后返回一个用于说明这两个值的相对顺序的数字。比较函数应该具有两个参数 a 和 b,其返回值如下:

  • 若 a 小于 b,在排序后的数组中 a 应该出现在 b 之前,则返回一个小于 0 的值。
  • 若 a 等于 b,则返回 0。
  • 若 a 大于 b,则返回一个大于 0 的值。

如果数组里全是数字,想按从大到小/从小到大排序的话,需要用到一个比较函数

以从小到大排序为例
var arr = [10,2,52,37,60]
function sortNumber(a,b) { return a > b }
arr.sort(sortNumber) // [2, 10, 37, 52, 60]

13.valueOf()(这个方法会在下一篇object中的常用方法里详细解释)

方法返回 Array 对象的原始值。

var arr = [1,2,3,4,5]
arr.valueOf(); // [1,2,3,4,5]

随机推荐

  1. C#==>匿名方法 【转】

    http://blog.csdn.net/gishero/article/details/5161826 1,匿名方法 C#为委托提供一种机制,可以为委托定义匿名方法,匿名方法没有名称,编译器会定指定 ...

  2. Android App的架构设计:从VM、MVC、MVP到MVVM

    随着Android应用开发规模的扩大,客户端业务逻辑也越来越复杂,已然不是简单的数据展示了.如同后端开发遇到瓶颈时采用的组件拆分思想,客户端也需要进行架构设计,拆分视图和数据,解除模块之间的耦合,提高 ...

  3. UI进阶 多线程

    一.多线程概述 程序.进程.线程 程序:由源代码生成的可执行应用.(例如:QQ.app) 进程:一个正在运行的程序可以看做一个进程.(例如:正在运行的QQ就是一个进程),进程拥有独立运行所需的全部资源 ...

  4. Java教程——int与Integer的区别

    首先说一下int和Integer的区别: int 是基本数据类型,Integer是int的包装类.注意:后者的类型是"类".例如使用泛型,List<Integer> n ...

  5. Python第二天课程

    创建列表的方式 list= [XX,XX] 或 list1 = list()使用list方法,将字符串或元祖创建为列表 列表名[其实位置:结束位置] 取列表中的特定元素 >>> na ...

  6. glibc

    http://www.cnblogs.com/vipzrx/p/3599506.html 原因 wheezy是2.13,编译android4.4 需要2.14的,报错如下: rebuilts/gcc/ ...

  7. FPGA高速ADC接口实战——250MSPS采样率ADC9481

    一.前言 最近忙于硕士毕业设计和论文,没有太多时间编写博客,现总结下之前在某个项目中用到的一个高速ADC接口设计部分.ADC这一器件经常用于无线通信.传感.测试测量等领域.目前数字系统对高速数据采集的 ...

  8. idea 2018.1 for mac破解激活方法---到2099

    https://blog.csdn.net/weixin_41470864/article/details/81607169

  9. fyzcms---相关文章推荐功能

    在用我写的fyzcms的做优化的时候,考虑到文章之间的权重集中,以及相互文章间的低耦合,所以设计了一个相关文章推荐的功能. 具体使用: <if condition="count($fi ...

  10. 2017&quot;百度之星&quot;程序设计大赛 - 复赛 01,03,05

    Arithmetic of Bomb Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Other ...