小程序开发选哪家好_js数组与字符串常用方法总

摘要: js数字能量数组与标识符串常见方式小结 创作者: 文中关键小结了js数字能量数组与标识符串的常见方式。具备一定的参照使用价值,下边跟随网编一起來看看吧string 常见方式:...

js数组与字符串常用方法总结     作者:   本文主要总结了js数组与字符串的常用方法。具有一定的参考价值,下面跟着小编一起来看下吧

string 常用方法:

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

 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相似,区别在参数为负数。

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需要返回的字符个数)

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) 方法返回指定索引位置处的字符。如果超出有效范围(0与字符串长度减一)的索引值返回空字符串.

 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 用来查找匹配一个正则表达式的字符串,然后使用新字符串代替匹配

数组常用的方法

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

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

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

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

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

6. join  数组转化为字符串 

 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(结束 不包含)

  返回新数组,原数组不变

 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  返回截好的数组 原数组变化

 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).二个参数  截取 (开始位置,个数) 返回截好的数组 原数组变化

 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).添加  原数组增加

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

  (4).替换 

 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表示数组本身

var arr=[1,2,3,4,5];
 arr.forEach(function(item,index,array){

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

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

 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  排序

 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)冒泡排序  每次比较相邻的两个数,如果后一个数比前一个数小,换位置

 function bSort(arr){
 var tmp;
 for(var i=0,len=arr.length-1;i i++){
 for(var j=0;j 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)快速排序 二分法,找到中间的数,取出来(新数组),原数组没,每次和此数比较,小的放到左边,大的放到右面 

 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)双层循环不是很好 

 var arr=[2,3,2,2,2,4,5],
 arr2=[];
 function find(arr2,ele){
 for(var i= 0,len=arr2.length;i i++){
 if(arr2[i]==ele) return true;
 return false;
 for(var i= 0,len=arr.length;i i++){
 if(!find(arr2,arr[i])){
 arr2.push(arr[i]);

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

 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方法排序,去掉旁边相同项 

 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);
 }

  一些常见数学方法

 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';

 var arr=str.split('.');
 console.log(arr[arr.length-1]);

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

 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中字符出现次数的统计 

 var str='aaaandkdffsfsdfsfssq12345',
 json={},
 n= 0,
 sName;
 for(var i= 0,len=str.length;i 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参数解析 

 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;

以上就是本文的全部内容,希望本文的内容对大家的学习或者工作能带来一定的帮助,同时也希望多多支持凡科!




联系我们

全国服务热线:4000-399-000 公司邮箱:343111187@qq.com

  工作日 9:00-18:00

关注我们

官网公众号

官网公众号

Copyright?2020 广州凡科互联网科技股份有限公司 版权所有 粤ICP备10235580号 客服热线 18720358503