javascript 数组问题
vara=[];varo=["32","13","21","32","12","54","22","31","25","88","50","50","01","00","...
var a = [];
var o = ["32","13","21","32","12","54","22","31","25","88","50","50","01","00","03","20","12","02","11","00"];
for(var i=0;i<o.length;i++){
var v = o[i];
if(!a[v])a[v]=0;
a[v]++;
if(a[v]>1)alert("重复"+v);
}
解释一下for循环中的意思,我没看太懂。以及这样写和传统的遍历数组哪个性能更好?谢谢了 展开
var o = ["32","13","21","32","12","54","22","31","25","88","50","50","01","00","03","20","12","02","11","00"];
for(var i=0;i<o.length;i++){
var v = o[i];
if(!a[v])a[v]=0;
a[v]++;
if(a[v]>1)alert("重复"+v);
}
解释一下for循环中的意思,我没看太懂。以及这样写和传统的遍历数组哪个性能更好?谢谢了 展开
展开全部
仅仅针对代码的话不解释,我说下原理和目的
1:a[]的length是由o[]中最大数决定的,在循环o没出现重复值之前都是在为a赋值,附的值并不是值的本身而是数出现的次数,出现重复值为该次数+1。
2:这个程序本身还存在一定的问题,以0打头的数是判断不到的,这样a[]中真正接收到的数其实只有15个(包括重复项)--------a[]中所有数相加为15
3:仔细观察(o[]中的值+1)== a[]中所在位置
目的:
就是找出o[]中大于等于10的重复项次数 重复项值为a[]中对应的索引值+1
给你把a[]贴出来可以观察到
[undefined, undefined, undefined, undefined, undefined, undefined, undefined, undefined, undefined, undefined, undefined, 1, 2, 1, undefined, undefined, undefined, undefined, undefined, undefined, 1, 1, 1, undefined, undefined, 1, undefined, undefined, undefined, undefined, undefined, 1, 2, undefined, undefined, undefined, undefined, undefined, undefined, undefined, undefined, undefined, undefined, undefined, undefined, undefined, undefined, undefined, undefined, undefined, 2, undefined, undefined, undefined, 1, undefined, undefined, undefined, undefined, undefined, undefined, undefined, undefined, undefined, undefined, undefined, undefined, undefined, undefined, undefined, undefined, undefined, undefined, undefined, undefined, undefined, undefined, undefined, undefined, undefined, undefined, undefined, undefined, undefined, undefined, undefined, undefined, undefined, 1]
传统的阶层型遍历你这种点对点效率应该要高点
1:a[]的length是由o[]中最大数决定的,在循环o没出现重复值之前都是在为a赋值,附的值并不是值的本身而是数出现的次数,出现重复值为该次数+1。
2:这个程序本身还存在一定的问题,以0打头的数是判断不到的,这样a[]中真正接收到的数其实只有15个(包括重复项)--------a[]中所有数相加为15
3:仔细观察(o[]中的值+1)== a[]中所在位置
目的:
就是找出o[]中大于等于10的重复项次数 重复项值为a[]中对应的索引值+1
给你把a[]贴出来可以观察到
[undefined, undefined, undefined, undefined, undefined, undefined, undefined, undefined, undefined, undefined, undefined, 1, 2, 1, undefined, undefined, undefined, undefined, undefined, undefined, 1, 1, 1, undefined, undefined, 1, undefined, undefined, undefined, undefined, undefined, 1, 2, undefined, undefined, undefined, undefined, undefined, undefined, undefined, undefined, undefined, undefined, undefined, undefined, undefined, undefined, undefined, undefined, undefined, 2, undefined, undefined, undefined, 1, undefined, undefined, undefined, undefined, undefined, undefined, undefined, undefined, undefined, undefined, undefined, undefined, undefined, undefined, undefined, undefined, undefined, undefined, undefined, undefined, undefined, undefined, undefined, undefined, undefined, undefined, undefined, undefined, undefined, undefined, undefined, undefined, undefined, 1]
传统的阶层型遍历你这种点对点效率应该要高点
展开全部
你这代码运行后会弹出(alert) 显示:重复32 重复50 重复12 重复00
我给你讲下 怎么弹出重复32的吧。
第一次循环:
1.var v = o[0]; 所以 v =“32”
2.if(!a[v]) 里面 !a[32]为true (a[“32”]还没有赋值,默认是空或0,表示false, !a[“32”]就表示true),所以执行a[“32”]=0。
3.然后a[“32”]++变成1
4.if(a[“32”]>1) 中a[“32”]>1为false,所以循环结束,后面那句alert不执行
第二第三次循环同第一次循环:
分别使得
a[“13”] =1 ;a[“21”]=1 都不执行alert
第四次循环
1.var v = o[3]; 所以 v =“32”
2.if(!a[v]) 里面 !a[“32”]为false (a[“32”]根据第一次循环,已经为1,表示true。!a[“32”]就表示flase),所以不执行a[“32”]=0。
3.然后a[“32”]++变成2
4.if(a[“32”]>1) 中a[“32”]>1为true,所以执行alert("重复32”);
也就是看到的 :重复32
其他弹出操作都同理,你应该不难理解了
我给你讲下 怎么弹出重复32的吧。
第一次循环:
1.var v = o[0]; 所以 v =“32”
2.if(!a[v]) 里面 !a[32]为true (a[“32”]还没有赋值,默认是空或0,表示false, !a[“32”]就表示true),所以执行a[“32”]=0。
3.然后a[“32”]++变成1
4.if(a[“32”]>1) 中a[“32”]>1为false,所以循环结束,后面那句alert不执行
第二第三次循环同第一次循环:
分别使得
a[“13”] =1 ;a[“21”]=1 都不执行alert
第四次循环
1.var v = o[3]; 所以 v =“32”
2.if(!a[v]) 里面 !a[“32”]为false (a[“32”]根据第一次循环,已经为1,表示true。!a[“32”]就表示flase),所以不执行a[“32”]=0。
3.然后a[“32”]++变成2
4.if(a[“32”]>1) 中a[“32”]>1为true,所以执行alert("重复32”);
也就是看到的 :重复32
其他弹出操作都同理,你应该不难理解了
本回答被提问者采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
for(var i=0;i<o.length;i++){
var v = o[i];//循环取值
if(!a[v])a[v]=0;//初始化每一个a循环的数组元素
a[v]++;//对下一次取到数组中的同一个元素进行叠加
if(a[v]>1)alert("重复"+v);//判断是否重复
}
这个代码的意思 是 取出重复的元素
var v = o[i];//循环取值
if(!a[v])a[v]=0;//初始化每一个a循环的数组元素
a[v]++;//对下一次取到数组中的同一个元素进行叠加
if(a[v]>1)alert("重复"+v);//判断是否重复
}
这个代码的意思 是 取出重复的元素
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
统计数组o中字符串重复次数以o的元素字符串为索引存到数组a中
a["32"]=1;
a["13"]=1;
a["21"]=1;
a["32"]=2;
.......
.....
...
.
a["32"]=1;
a["13"]=1;
a["21"]=1;
a["32"]=2;
.......
.....
...
.
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
认真看看,就是找出数组中重复的元素
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询