js 常用数组和字符串方法
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 常用数组和字符串方法的更多相关文章
- 常用数组、字符串方法总结&获取元素、DOM操作
字符串的方法.返回值.是否改变原字符串:1 charAt() 方法可返回指定位置的字符. 不改变原始字符串 JavaScript并没有一种有别于字符串类型的字符数据类型,返回的字符是长度为 1 的字符 ...
- JS中数组和字符串方法的简单整理
一.数组: 数组的基本方法: 1.增:arr.unshift() /push() 前增/后增 2.删:arr.shift() /pop ...
- JavaScript笔记(二)——常用数组、字符串方法的应用
1.将字符串中的字符翻转,比如'hello',翻转成'olleh'. var arr=[]; function reverseString(str) { arr=str.split("&qu ...
- 微信开发所需要的的方法(签名认证、数组转字符串方法、将xml字符串转换为数组、发送xml请求方法)
//将xml字符串转换为数组 public function xmlToArray($xml){ $array_data = json_decode(json_encode(simplexml_loa ...
- JS中数组和字符串的方法大全
数组的方法很多,ECMScript5又提供了好几种方法.有空把之前的云上的笔记整理了一下,方便自己以后查找使用. 一.ECMScript 3的Array.prototype中定义的方法 1.join( ...
- JS —— 数组与字符串方法
数组 1. 基本方法 1)Array.prototype.unshift(item1,item2,item3...) 描述: 在数组的前面添加元素,一次可以传入多个参数. 注意:元素会根据当前传入的 ...
- JS中数组和字符串具有的方法,以及substring,substr和slice的用法与区别
String 对象属性 属性 描述 constructor 对创建该对象的函数的引用 length 字符串的长度 prototype 允许您向对象添加属性和方法 String 对象方法 方法 描述 ...
- JavaScript -- 常用的数组及字符串方法
数组 var arr= new Array(); arr.push(); //在数组尾部添加一个元素,返回新的长度 *原数组发生变化 arr.pop(); //删除最后一个元素,返回的是被删除的元素 ...
- js中数组、字符串、日期、数学API方法一览
以下内容摘选自 http://www.w3school.com.cn/jsref/jsref_obj_array.asp 点击方法新窗口打开详解 数组: 方法 描述 concat() 连接两个或更多的 ...
随机推荐
- Markdown 语法手册 (完整整理版)
http://blog.csdn.net/witnessai1/article/details/52551362
- STL --> stack栈
stack栈 c++stack(堆栈)是一个容器的改编,它实现了一个先进后出的数据结构(FILO),使用该容器时需要包含#include<stack>头文件: 定义stack对象示例: s ...
- Algorithm --> 邮票连续组合问题
邮票组合问题 有四种面值的邮票很多枚,面值分别为1,4,12,21,取五张,求取出这些邮票的最大连续组合值 代码: #include <stdio.h> #include <stri ...
- touch事件过程
local function onTouchBegan(touch, event) local point = touch:getLocation() --获取touch位置, 基于openGL坐标 ...
- Java基础笔记(7)----三个修饰符
abstract抽象 方法 抽象方法:abstract修饰的方法,只有声明 而没有方法的实现(连{}都没有). 语法:修饰符 返回值类型 方法名(形参列表); 注意:抽象方法 必须定义在 抽象类中. ...
- 贯穿程序员一生的必备开发技能——debug
1.什么是debug debug是一种运行模式,用来跟踪程序的走向,以及跟踪程序运行过程中参数的值的变化. 2.debug的作用 debug一般用来跟踪代码的运行过程,通常在程序运行结果不符合预期或者 ...
- HDFS架构
- 关于python中argsort()函数的使用
在实现<机器学习实战>中kNN代码时遇到需要将计算好的距离进行排序,即可使用argsort()函数,在此依据个人理解对该函数进行简单的介绍. 总的来说,argsort()函数是对数组中的元 ...
- 《Effective Objective-C 2.0》摘要
前一段时间将<Effective Objective-C 2.0>这本书浏览了一遍,说一下几个觉得比较有意思的知识点. 感觉这本书是ios开发必看的一本书,最基础的,以及稍微高阶一点的oc ...
- memmove 和 memcpy的区别以及处理内存重叠问题
区别: memcpy和memmove()都是C语言中的库函数,在头文件string.h中,作用是拷贝一定长度的内存的内容,原型分别如下: void *memcpy(void *dst, const v ...