共同点
- 都可以遍历
- 都有length
- 都可以通过索引取值 str[索引] arr[索引]
注意:数组没有length()这个方法,有length的属性, String有length()这个方法
不同点
- 遍历方式不同:数组:for、for in、forEach 字符串:for
- 字符串不能修改,数组可以修改
- 类型不同:数组:赋值的是地址
字符串: 赋值的是值
例题
- 返回一个只包含数字类型的数组(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>
- 查找字符串出现最多的字符和个数
<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>