字符串与数组的异同点

本文探讨了字符串和数组在编程中的共同点和不同点,包括它们都可以遍历和通过索引取值,但字符串不可修改,而数组可以。此外,它们在遍历方式和赋值类型上也存在差异。文章还提供了例题,如提取只包含数字的数组和查找字符串中出现最多的字符及其频率。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

字符串与数组异同点

共同点

  • 都可以遍历
  • 都有length
  • 都可以通过索引取值 str[索引] arr[索引]
    注意:数组没有length()这个方法,有length的属性, String有length()这个方法

不同点

  • 遍历方式不同:数组:for、for in、forEach 字符串:for
  • 字符串不能修改,数组可以修改
  • 类型不同:数组:赋值的是地址
    字符串: 赋值的是值

例题

  1. 返回一个只包含数字类型的数组(nsjgds312jiehks645jdesgv978)
<script type="text/javascript">
var str='6n2s28jgds312ji1eh79ks645jde43sgv978';
		function getArr(str){
             var s='';   //保存数字型字符串
             var srro=[];
			//遍历字符串
			for(var i=0;i<str.length;i++){
                if(str[i]>='0'&&str[i]<='9'){  //挑选字符串中的数字
                	//console.log(str[i]);
                	s+=str[i];  //将数字型字符存入s中;
                }else{
                	if(s!=''){
                    srro.push(s);  //将拼接好的数字存入数组
                }
                    s='';  //清空字符串
                }
            }
            //将末尾数字添加到数组中
            if(s!=''){
            	srro.push(s);
            }
            console.log(srro);
        }
        getArr(str);
        </script>
  1. 查找字符串出现最多的字符和个数
       <script type="text/javascript">
        var m='hasvbbavdbhaahvagbey';//aaaaabbbbhhh
        function dem(m){
            //1、将字符串转换为数组
            var ar1=m.split('');
            //2、排序
            ar1.sort(); //相同的在一起了
            //3、转为字符串
           m=ar1.join('');
            //console.log(m);
            //4、遍历字符串
            var temp=m[0]; //
            var count=1;   //计数器
            var arr0=[];
            for(var j=1;j<m.length;j++){
                if(temp==m[j]){   //重复字符
                    count++;
                }else{       //不重复字符,该字符统计结束
                    var arrs=[];
                    arrs.push(temp); //字符
                    arrs.push(count); //个数
                    arr0.push(arrs); //将字符和重复次数(数组)保存起来
                    temp=m[j];//修改中间变量
                    count=1; //修改计数器
                }
            }
            //将最后一个元素存入
            arrs=[];
            arr0.push(arrs);
            //console.log(arr0);
            return arr0;
        }
        var ar=demo1(m);
        var max=ar[0][1];//假设第一个字符的个数最多
        var t=ar[0][0];  //个数最多的字符
        ar.forEach(function(item){
            console.log(item);
            if(max<item[1]){
                max=item[1];
                t=item[0];
            }
        });
        console.log(t,max);
    </script>
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值