数组和字符串的方法整合

js中的数组和字符串有点类似,不是说本质上,而是在遍历,获取时的类似。从标识来说,可以一眼看出那个是数组,那个是字符串;但在使用遍历时,会不经意的将两者混淆,导致方法用错。同时两者的方法又有好几个相同的,但需注意语义,以及有些方法是不会对原数组产生影响的。以下是我整理的一些关于数组和字符串的一些方法,不保证完整性。

数组方法

arr.push()      可向数组的末尾添加一个或多个元素,并返回新的长度。会影响原数组

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

arr.unshift()  在数组开头添加元素,返回该元素值。会影响原数组

1 var a = [1,2,3,"hello"];
2 console.log(a.unshift("world")); // world
3 console.log(a); // ["world",1,2,3,"hello"]

arr.pop()  用于弹出数组最后一个元素,返回该元素的值。会影响原数组。(等同于在数组中删除此元素)

1 var a = [1,2];
2 console.log(a.pop()); // 2
3 console.log(a); // [1]

arr.shift()  将数组的第一个元素从中删除,并且返回第一个元素的值。会影响原数组。(删除操作)

var a = [1,2];
console.log(a.shift()); // 1
console.log(a); // [2]

arr.concat()  用于连接两个或者多个数组,返回一个新的数组。不会影响原数组。

1 var arr = [1,2,3,4];
2 alert(arr.concat(1,2,3,[1,2,3],5).length); //11
3 arr.concat(1,2,4,[1,2,3],5);
4 alert(arr.length)    //4

arr.join()  接收一个参数作为分隔符,以字符串的形式返回。不会影响原数组。它接受0参数或者1个参数,若是传了多个参数只有第一个是有效的。参数若是为无,默认为‘,‘

1 [1,2,3,4].join(‘0‘).split(‘‘)    //["1", "0", "2", "0", "3", "0", "4"]
2 var arr = [1,2,3,4]; arr.join("&");
3 console.log(arr)    //[1,2,3,4]

arr.slice(n,m):用于切割并且创造一个新的数组,不会影响原数组。

  • 1个参数: 从开始位置截取到结尾
  • 2个参数: 从开始位置截取到结束位置 [a, b) 不包括结束位置本身
  • 结束位置还可以是负数( 实际计算为:该负数 + 数组长度) 结束位置小于起始位置,返回 空数组 []
1 var a = [1, 2, 3];
2 console.log(a.slice(1));      // [2, 3]
3 console.log(a.slice(1, 2));      // [2]
4 console.log(a);       // [1, 2, 3]   原数组没有被改变
5 console.log(a.slice(1, -1));     // (-1 + 3) = 2 > a.slice(1, 2) > [2]
6 console.log(a.slice(1, -100));     // []

arr.splice(n,m,data)  用于截取数据,插入数据,删除数据。操作的是数据本身,所以会影响原数组。

  • [开始位置]:当只有1个参数的时候:从数组的开始位置删掉剩下的所有数据,返回删掉的数据。
  • [开始位置,截断的个数](注意,这和 slice 的第二个参数意义可是不一样的,这是 长度):以 n为起点,m为长度,删掉 [n, n+ m) 的元素
  • [开始位置,截断个数,插入的数据]: (n, m, data): 以 n为起点, m为长度,删掉 [n, n+ m] 的元素,并填充 data 到删除的位置
1 var array = [15, 5, 10, 2, 0];
2 console.log(array.splice(1, 3,1,2,1));  //5,10,2
3 console.log(array);     //15, 1, 2, 1, 0
4 console.log(array.splice(1, 3));  //5,10,2
5 console.log(array);     // [15,0]
6 console.log(array.splice(1));     // 0
7 console.log(array);     //15

arr.reverse()  将数组元素倒顺,会影响原数组。

1 var a = [1,2,3,5];
2 console.log(a.reverse());  // [5,3,2,1]

arr.sort(fn)  排序方法,参数:fn(a,b):比较函数,无参数的时候按照字母表 ASCII 升顺排序

1 var a = [1, 2, 3, 5, 10, 25];
2 console.log(a.sort());     // [1, 10, 2, 25, 3, 5]

sort()默认对每一个 子项 调用转型方法 toString(),之后才进行判断。而这个时候其实是根据 ASCII 码的大小来判断的。因此 "15" < "5"。先比较第一位,再比较第二位。想要按我们预期的排序,需进行一些处理。

1 var array = [15, 5, 10, 2, 0];
2 array.sort(function(a,b){
3         return a-b;
4 })
5 console.log(array);  //[0, 2, 5, 10, 15]

以下为ES5新增方法(新增的方法都不会影响原数组)

arr.indexOf()  返回在该数组中第一个找到的元素位置,若不存在则返回 -1

1     var array = [15, 5, 10, 2, 0];
2     console.log(array.indexOf(1));       //-1
3     console.log(array.indexOf(15));     //0

arr.forEach():对数组中的每一项运行给定函数,这个方法没有返回值(遍历数组,获得数组所有元素)参数为function类型,默认有传参(遍历数组内容,对应数组索引,数组本身)

1     var array = [15, 5, 10, 2, 0];
2     array.forEach(function (value, index, array) {
3         console.log(array[index]);
4     });

arr.map():对数组中的每一项运行给定函数,返回每次调用结果组成的数组。

1     var array = [15, 5, 10, 2, 0];
2     var num = array.map(function (value, index, array) {
3         return value * 3;
4     });
5     console.log(array, num);      //[15, 5, 10, 2, 0] ,[45, 15, 30, 6, 0]

arr.filter():对数组中的每一项运行给定函数,返回该函数会返回 true 的项组成的数组(筛选)

1     var array = [15, 5, 10, 2, 0];
2     var num = array.filter(function (value, index, array) {
3         return value >0;
4     });
5     console.log(array, num);         //[15, 5, 10, 2, 0] ,[15, 5, 10, 2]

两个归并的方法

  • arr.reduce(function(pre, next, index, array) {}) 从左到右
  • arr.reduceRight(function(pre, next, index, array) {}) 从右到左

some: 对数组中的每一项运行给定函数,如果函数对任一项返回 true,就会返回 true,否则 false

every:对数组中的每一项运行给定函数,如果函数对所有的项都返回 true,才返回 true,否则 false

以上就是我所知晓的所有数组方法,ES6还未涉及到,后续补充!!

字符串方法

indexOf(data,start)   用于返回某个数组或者字符串中规定字符或者字符串的位置;当前查询字符所在的位置的下标,如无,返回-1,start表示从第几位开始查询。

1     var str="hello world!"
2     console.log(str.indexOf("h"));    //0
3     console.log(str.indexOf("i"));    //-1

str.lastIndexOf()  判断一个字符最后一次出现在某个字符串的索引,如果包含返回它的索引,如果不包含返回-1.

1     var str="hello world!"
2     console.log(str.lastIndexOf("d"));    // 10
3     console.log(str.lastIndexOf("i"));    //-1

str.charAt()    返回指定位置的字符

1     var str="hello world!"
2     console.log(str.charAt(1));    //e

str.substr(n,m)  从索引n开始,截取m个字符,将截取的字符返回,对原字符串没有任何改变

1     var str="hello world!"
2     console.log(str.substr(1));    //ello world!
3     console.log(str.substr(1,3))   //ell

str.substring(n,m)  返回从指定位置n,到结束位置(不含)m 的字符串,如果不指定结束位置,则从开始位置到结尾

1     var str="hello world!"
2     console.log(str.substring(1));    //ello world!
3     console.log(str.substring(1,3))   //el

str.slice(n,m)  同substring,需要注意和数组中方法slice()的相似

1     var str="hello world!"
2     console.log(str.slice(1));    //ello world!
3     console.log(str.slice(1,3))   //el

str.split("-")  通过指定字符分割字符串,返回一个数组

1     var str="hello world!"
2     console.log(str.split(" "));    // ["hello", "world!"]

str.replace("需要替换的字符串","替换之后的字符串")  将字符串中的一些字符替换为另外一些字符。最好配合正则使用

1     var str="hello world!"
2     console.log(str.replace("l","*"));    // he*lo world!

str.charCodeAt()   返回指定索引出的unicode字符

1     var str="hello world!"
2     console.log(str.charCodeAt(0));    // 104

str.concat()    拼接2个字符串,返回一个新字符串,对原有字符串没有任何改变。

1     var str="hello world!"
2     console.log(str.concat("d"));    // hello world!d
3     console.log(str);   //hello world!

str.match()     可在字符串内检索指定的值,或找到一个或多个正则表达式的匹配。把找到的字符放在数组里,返回一个数组。

1     var str="hello world!"
2     console.log(str.match("d"));    // ["d", index: 10, input: "hello world!", groups: undefined]

str.search()     方法用于检索字符串中指定的子字符串,或检索与正则表达式相匹配的子字符串。

1     var str="hello world!"
2     console.log(str.search("d"));    // 10
3     console.log(str.search("l"));   //2

以上为字符串的方法,同数组,不涉及ES6的!!

注意方法是否会影响原数组!!

原文地址:https://www.cnblogs.com/ruo-shui-yi-fang/p/11403995.html

时间: 2024-11-02 23:53:38

数组和字符串的方法整合的相关文章

C Language Study - 字符数组及字符串定义方法

定义一个字符数组: char cArray[] = {'I','a','m','a','m','a','n','\0'}; 用'\0'表示字符数组结束标志.它不占字符长度大小,但是占内存大小. Result : sizeof(cArray) = 8 ; strlen(cArray) = 7 . 字符串定义方法: (1) char cString[] = "I am a Man !"; 定义了一个字符串数组,与定义一个字符数组实质一样. (2) char *pString = "

js数组与字符串的相互转换方法

1.数组转字符串需要将数组元素用某个字符连接成字符串,示例代码如下: var a, b; a = new Array(0,1,2,3,4); b = a.join("-"); //"0-1-2-3-4" 2.字符串转数组 实现方法为将字符串按某个字符切割成若干个字符串,并以数组形式返回,示例代码如下: var s = "abc,abcd,aaa"; ss = s.split(",");// 在每个逗号(,)处进行分解 [&qu

javascript中数组和字符串的方法比较

前面的话 字符串和数组有很多的相同之处,它们的方法众多,且相似度很高:但它们又有不同之处,字符串是不可变值,于是可以把其看作只读的数组.本文将对字符串和数组的类似方法进行比较 可索引 ECMAScript5定义了一种访问字符的方法,使用方括号加数字索引来访问字符串中的特定字符 可索引的字符串的最大的好处就是简单,用方括号代替了charAt()调用,这样更加简洁.可读并且可能更高效.不仅如此,字符串的行为类似于数组的事实使得通用的数组方法可以应用到字符串上 如果参数超出范围或是NaN时,则输出un

js数组与字符串的相互转换方法 数组常用的方法

1 数组转字符串 需要将数组元素用某个字符连接成字符串,示例代码如下: var a, b; a = new Array(0,1,2,3,4); b = a.join("-"); 二.字符串转数组 实现方法为将字符串按某个字符切割成若干个字符串,并以数组形式返回,示例代码如下: var s = "abc,abcd,aaa"; ss = s.split(",");// 在每个逗号(,)处进行分解. POP 删除最后一项 删除最后一项,并返回删除元素的

简单的对数组内字符串排序方法

//  NSArray * sortedArray = [cache sortedArrayUsingSelector:@selector(compare:)]; { NSArray * arr1 = @[@"A",@"B",@"C",@"D"]; NSArray * arr2 = @[@"1",@"2",@"3"]; NSArray * arr3 = @[@&quo

一个小错误引发思考最终得出数组转字符串的新方法

今天在项目中犯了一个算得上是低级错误的错误吧 我在构造函数里声明了一个angle变量, this.angle; 然后在后面某函数中对此变量进行了+=操作, this.angle+=90 最后在一系列逻辑后我发现this.angle报错 NaN,马上定位到构造函数,就发现了原来该变量声明了但并未初始化赋值 求不笑,偶尔也是会傻乎乎犯些这种低级错误的,而这一次暴露出来完全是因为我在后面使用了+=操作,如果后面是单纯的 = 赋值操作,这样构造函数里是可以不初始化的 这时,我突然想试试如果+=后面不是数

关于PHP数组转字符串详细介绍

随着时代的发展,我们的开发技术也随着更新,对于PHP还是比较常用的,于是我研究了一下PHP数组转字符串,在这里拿出来和大家分享一下,希望对大家有用.经常需要使用PHP处理字符string,PHP内置的字符函数提供了非常强大的功能,基本上能完成大部分字符处理操作.如使用str_split函数将一个字符转换成一个数组.implode函数将php数组转字符串.strpos函数在一个字符中查找另一个字符.substr函数获取字符中的某几个字符.strlen函数获取字符长度等等.这些都是PHP最基础的知识

数组 和 字符串 的相互转换

1,字符数组转换为字符串 java可以使用两种方法直接将字符数组转为字符串. 方法1:直接在构造String时转换. char[] data = {'a', 'b', 'c'}; String str = new String(data); 方法2:调用String类的方法转换. String.valueOf(char[] ch) 2,字符串数组转换为字符串 如果是 "字符串数组" 转 "字符串",只能通过循环,没有其它方法 String[] str = {&quo

对于数组(字符串)slice方法的总结

数组(字符串)使用slice方法的目的就是截取目标数组(字符串),通俗的来讲就是截取想要的.网上有很多slice方法的实例加以说明,在此主要是从特殊到一般对此方法进行了总结. 先说总结的方法,再看下面的例子进行理解. 假设已知一个数组长度为len,则参数的有效范围为[-len,len-1],-len和0为第一个元素的下标,-1和len-1表示最后一个元素的下标.slice()总共有两个参数,不填参数返回所有元素:若只填一个参数x,则x为起始元素的下标(起始元素一定会被截取),返回x之后的所有元素