javascript数组与字符串常用方法总结

最近在梳理js的基础,首先从数组和字符串开始。

string 常用方法:

1.substring(start开始位置的索引,end结束位置索引) 截取的位置不包含结束位置的字符,只写一个参数表示从开始位置截取到最后

1

2

var str='abcdefg';

str.substring(1) //得到bcdefg  str.substring(1,3) //得到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相似,区别在参数为负数。

1

2

var str='abcdefg';

str.slice(1)  //bcdefg      str.substring(1,3) // bc

输入负值时 值与字符串的长度相加

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

值绝对值大于字符串的长度时变为 0

str.slice(-22) =>str.substring(0)  //abcdefg

第二个参数绝对值大于字符串的长度时,返回''

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

1

2

var str='abcdefg';

str.substr(1) //bcdefg      str.substr(1,1) //b

输入负值时 start参数与字符串的长度相加 ,end为负时参数变为0

1

2

str.substr(-1) =>str.substr(6)//g

str.substr(-2,-3) // ''

4.charAt(index) 方法返回指定索引位置处的字符。如果超出有效范围(0与字符串长度减一)的索引值返回空字符串.

1

2

var str='abcdefg';

str.charAt(2) // c

5.index(string)  返回String对象内第一次出现子字符串位置。如果没有找到子字符串,则返回-1。

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

6.lastIndexOf(string)  倒叙查找

返回String对象内第一次出现子字符串位置。如果没有找到子字符串,则返回-1。

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

7.split(str)  将字符串以参数分割为数组

var str='abcadeafg'     str.split('a') //["", "bc", "de", "fg"]

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

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

10.match() – 方法可在字符串内检索指定的值,或找到一个或多个正则表达式的匹配

11.search  方法返回与正则表达式查找内容匹配的第一个字符串的位置。

12.replace 用来查找匹配一个正则表达式的字符串,然后使用新字符串代替匹配

http://www.cnblogs.com/bijiapo/p/5451924.html

数组常用的方法

1. push      添加到最后        返回添加后的数组

2. unshift   添加到最前面      返回添加后的数组

3. shift     删除(从前面)    返回处理后的数组

4. pop       删除最后一项      返回处理后的数组

5. reverse   数组翻转          返回处理后的数组

6. join      数组转化为字符串

1

2

3

var arr=[1,2,3,4,5], str=arr.join('--');

console.log(str); // 1--2--3--4--5 以join内的参数切割数组

console.log(arr); // [1,2,3,4,5]  原数组未变

7. slice(start,end)     截取数组 从start(开始) 到end(结束 不包含)

返回新数组,原数组不变

1

2

3

var arr=[1,2,3,4,5],new=arr.slice(2,4);

console.log(new);  // [3,4]

console.log(arr);  // [1,2,3,4,5]

8. concat   数组合并

9. splice(开始下标,个数,ele1,ele2....) 剪接数组

(1).一个参数  从参数位置截取 填写负数类似上面str slice  返回截好的数组 原数组变化

1

2

3

4

var arr=[1,2,3,4,5];

console.log(arr.splice(1));  // [2,3,4,5]

console.log(arr);       // [1]

console.lgo(arr.splice(-1))  // [5]

(2).二个参数  截取 (开始位置,个数) 返回截好的数组 原数组变化

1

2

3

4

5

var arr=[1,2,3,4,5];

console.log(arr.splice(1,3)); // [2,3,4]

console.log(arr)       // [1,5]

arr.splice(0,1) =>arr.shift()

arr.splcie(arr.length-1,1) =>arr.pop()

(3).添加  原数组增加

1

2

3

var arr=[1,2,3,4,5];

console.log(arr.splice(1,0,13)); // []

console.log(arr);        // [1,13,2,3,4,5]

(4).替换

1

2

3

4

5

var arr=[1,2,3,4,5];

console.log(arr.splice(1,2,'a','b')) // [2,3]

console.log(arr);        // [1,'a','b',4,5]

arr.splice(0,0,1) =>arr.unshift(1);

arr.splice(arr.length,0,1) => arr.push(1)

10. arr.forEach(item,index,array){}   遍历,循环 类似jquery的each

其中的item参数是数组中的内容,index为其索引,array表示数组本身

1

2

3

var arr=[1,2,3,4,5];

arr.forEach(function(item,index,array){

})

遇到嵌套跳出循环出现问题,暂时没有解决;

11. map方法        映射 用法和forEach类似

1

2

3

4

5

6

7

8

var men=[

{'name':1,'age':12},

{'name':2,'age':22},

{'name':3,'age':33}

],

age=men.map(function(item){

return item.age;

})

12. arr.sort  排序

1

2

var arr=[1,2,22,11,33,3,5,4];

console.log(arr.sort()) // [1,11,2,22,3,33,4,5]

默认情况下sort方法是按ascii字母顺序排序的,而非我们认为是按数字大小排序

arr.sort(function(a,b){ return a-b})

a-b从小到大 b-a从大到小

13.  顺便写写我知道的排序方法

(1)冒泡排序  每次比较相邻的两个数,如果后一个数比前一个数小,换位置

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

function bSort(arr){

var tmp;

for(var i=0,len=arr.length-1;i<len;i++){

for(var j=0;j<len;j++){

if(arr[j]>arr[j+1]){

//换位置

tmp=arr[j+1];

arr[j+1]=arr[j];

arr[j]=tmp;

}

}

}

return arr;

}

function bSort(arr){

var tmp;

arr.forEach(function(item,i){

arr.forEach(function(item,i){

if(item>arr[i+1]){

//换位置

tmp = arr[i + 1];

arr[i + 1] = arr[i];

arr[i] = tmp;

}

})

})

return arr

}

(2)快速排序 二分法,找到中间的数,取出来(新数组),原数组没,每次和此数比较,小的放到左边,大的放到右面

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

function fastSoft(arr){

var len=arr.length;

if(len<=1){ return arr}

var  cIndex=Math.floor(len/2),

c=arr.splice(c,1),

left=[],

right=[];

arr.forEach(function(item,i){

if(item<c[0]){

left.push(item);

}else{

right.push(item);

}

})

return fastSoft(left).concat(c,fastSoft(right));

}

14. 数组的去重也写下吧

(1)双层循环不是很好

1

2

3

4

5

6

7

8

9

10

11

12

13

var arr=[2,3,2,2,2,4,5],

arr2=[];

function find(arr2,ele){

for(var i= 0,len=arr2.length;i<len;i++){

if(arr2[i]==ele) return true;

}

return false;

}

for(var i= 0,len=arr.length;i<len;i++){

if(!find(arr2,arr[i])){

arr2.push(arr[i]);

}

}

(2)利用json的key值无重复

1

2

3

4

5

6

7

8

9

10

11

var arr=[2,3,2,2,2,4,5],

json={},

arr2=[];

arr.forEach(function(item,i){

if(!json[item]){

json[item]=222;

}

});

for(var name in json){

arr2.push(Number(name));//类型发生变化了

}

(3) 利用sort方法排序,去掉旁边相同项

1

2

3

4

5

6

7

8

var arr=[2,3,2,4,4,4,5],

arr2=[];

arr.sort();

for(var i=0;i<arr.length;i++){

if(arr[i]==arr[i+1]){

arr.splice(i--,1);

}

}

一些常见数学方法

1

2

3

4

5

math.abs() 取绝对值  math.ceil() 向上取整 math.floor() 向下取整

math.round() 四舍五入 math.roundom

function getRan(n,m){

return Math.floor(Math.random()*(m-n)+n);

}

数组和字符串的一些综合应用

1. 截取后缀名

(1) var str='1.xxx.avi';

str=str.substring(str.lastIndexOf('.')+1);

(2) var str='1.xxx.avi';

1

2

var arr=str.split('.');

console.log(arr[arr.length-1]);

2.字母翻转,首字母大写

1

2

3

4

5

6

7

8

var str='wo shi yi ge demo',

arr=str.split(' ');

for(var i=0;i<arr.length;i++){

console.log()

arr[i]=arr[i].charAt(0).toUpperCase()+arr[i].substring(1);

}

arr.reverse();

str=arr.join(' ');

3. str中字符出现次数的统计

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

var str='aaaandkdffsfsdfsfssq12345',

json={},

n= 0,

sName;

for(var i= 0,len=str.length;i<len;i++){

var Letter=str.charAt(i);

//统计次数

if(json[Letter]){

json[Letter]++;

}else{

json[Letter]=1;

}

}

//找最大

for(var name in json){

if(json[name]>n){

n=json[name];

sName=name;

}

}

console.log('出现最多的字母'+sName+'次数为'+n);

4.  简单的url参数解析

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

function getData() {

var search = window.location.search.substring(1);

if (!search) {

return;

}

var arr = search.split('&'),

arr2 = [],

json = {},

key,

alue;

for (var i = 0; i < arr.length; i++) {

arr2 = arr[i].split('=');

key = arr2[0];

value = arr2[1];

json[key] = value;

}

return json;

}

js 常用数组和字符串方法的更多相关文章

  1. 常用数组、字符串方法总结&获取元素、DOM操作

    字符串的方法.返回值.是否改变原字符串:1 charAt() 方法可返回指定位置的字符. 不改变原始字符串 JavaScript并没有一种有别于字符串类型的字符数据类型,返回的字符是长度为 1 的字符 ...

  2. JS中数组和字符串方法的简单整理

    一.数组: 数组的基本方法:              1.增:arr.unshift() /push()    前增/后增                  2.删:arr.shift() /pop ...

  3. JavaScript笔记(二)——常用数组、字符串方法的应用

    1.将字符串中的字符翻转,比如'hello',翻转成'olleh'. var arr=[]; function reverseString(str) { arr=str.split("&qu ...

  4. 微信开发所需要的的方法(签名认证、数组转字符串方法、将xml字符串转换为数组、发送xml请求方法)

    //将xml字符串转换为数组 public function xmlToArray($xml){ $array_data = json_decode(json_encode(simplexml_loa ...

  5. JS中数组和字符串的方法大全

    数组的方法很多,ECMScript5又提供了好几种方法.有空把之前的云上的笔记整理了一下,方便自己以后查找使用. 一.ECMScript 3的Array.prototype中定义的方法 1.join( ...

  6. JS —— 数组与字符串方法

    数组 1. 基本方法  1)Array.prototype.unshift(item1,item2,item3...) 描述: 在数组的前面添加元素,一次可以传入多个参数. 注意:元素会根据当前传入的 ...

  7. JS中数组和字符串具有的方法,以及substring,substr和slice的用法与区别

     String 对象属性 属性 描述 constructor 对创建该对象的函数的引用 length 字符串的长度 prototype 允许您向对象添加属性和方法 String 对象方法 方法 描述 ...

  8. JavaScript -- 常用的数组及字符串方法

    数组 var arr= new Array(); arr.push(); //在数组尾部添加一个元素,返回新的长度 *原数组发生变化 arr.pop(); //删除最后一个元素,返回的是被删除的元素 ...

  9. js中数组、字符串、日期、数学API方法一览

    以下内容摘选自 http://www.w3school.com.cn/jsref/jsref_obj_array.asp 点击方法新窗口打开详解 数组: 方法 描述 concat() 连接两个或更多的 ...

随机推荐

  1. Django+xadmin打造在线教育平台(四)

    七.授课机构功能 7.1.模板继承 (1)创建母板 把org-list.html拷贝到templates目录下,新建base.html,剪切org-list.html内容到里面 再修改一下静态文件的地 ...

  2. python安装第三方库

    在编写爬虫程序时发现unsolved import 一时不解,以为是ide出问题了,其实是没有安装第三方库导致的. 于是到https://pypi.python.org/pypi/requests/去 ...

  3. 笔记:Struts2 文件上传和下载

    为了上传文件必须将表单的method设置为POST,将 enctype 设置为 muiltipart/form-data,只有设置为这种情况下,浏览器才会把用户选择文件的二进制数据发送给服务器. 上传 ...

  4. Spring Boot Druid数据源配置

    package com.hgvip.config; import com.alibaba.druid.pool.DruidDataSource; import com.alibaba.druid.su ...

  5. [poj3984]迷宫问题_bfs

    迷宫问题 题目大意:给你一个5*5的矩阵,求左上角到左下角的最短路径. 注释:0或1的矩阵,1表示不能走,0表示能走,保证有唯一最短路径. 想法:bfs爆搜练习题.通过其实点,定义方向数组,然后进行b ...

  6. ReentrantLock 与 AQS 源码分析

    ReentrantLock 与 AQS 源码分析 1. 基本结构    重入锁 ReetrantLock,JDK 1.5新增的类,作用与synchronized关键字相当,但比synchronized ...

  7. C#/AutoCAD 2018/ObjectArx/二次开发再说实体(六)

    这些函数对大家很有用,如果想获取详细源代码请加云幽学院yunyou.ke.qq.com报名免费课程,如果想学习更系统.更全面的知识请报名收费课程,有大量开发案例共享. 1.获取模型空间中所有实体 #r ...

  8. 【Alpha版本】冲刺阶段 - Day4 - 加速

    今日进展 袁逸灏:实现音乐的播放.(5h) 启动类,游戏画面类(修改类) 刘伟康:继续借鉴其他 alpha 冲刺博客,了解了Android方面的部分内容,便于更好地推进进度.(2h) 刘先润:更新图画 ...

  9. xcode进行代码覆盖率测试

    去年写的文章,搬到cnblog 本文所述的方法只对xcode5做过测试,xcode6是否可行尚未可知. 配置编译选项 首先请参考苹果官方的文档Configuring Xcode for Code Co ...

  10. codevs 3342 绿色通道

    codevs 3342 绿色通道 http://codevs.cn/problem/3342/ 难度等级:黄金 题目描述 Description <思远高考绿色通道>(Green Pass ...