js 数组,找出3个,或4个相同的元素,并写出这些元素所在的位置,

比如我有15个20以内的数,按从小到大排列,可以是任意的,可以有相同,相同的最多不超个4个,比如说里面最多有4个1,
例子
它们是 1,1,1,2,3,4,5,7,8,9,10,12,12,13,15
我这样标记他们,
他的的位置, 数值
1 1
2 1
3 1
4 2
5 3
6 4
7 5
8 7
9 8
10 9
11 10
12 12
13 12
14 13
15 15

我现要找出这3或4个相同的数,,并把他们替换成0 ,还要知道他的的位置
这个例子里面可以找到3个相同的1 并写出1 ,还要写出他们的位置,1,2,3

结果是:这串数变成: 0,0,0,2,3,4,5,7,8,9,10,12,12,13,15
3个相同的数:1
4个相同的数:(无)
他们的位置: 1,2,3

用js 实现,,

低手,请给出具体代码
最开始20以内的数可以有0,0的数量不限4个以内,或者说里面可以有0,但无论有几个0我都不理他,
最新回答
隨遇而安

2026-10-26 08:53:29

想在这道题中练习的算法意义,试了一下。用了一些js的高级OO,呵呵
=======
<script>
var a=[1,1,1,2,3,3,3,3,4,5,6,6,6,6,6,7,8,8,8,8,9,10,12,12,13,15];
//下句排序如果原数念逗据已排可以去掉
a=a.sort(function(x,y){return x-y;});
var d=new Object();
function Record(e,p){
this.element=e;
this.pos=p;
}
document.writeln("处理前的数组:");
for(var i in a) document.write(a[i]+' ');
var c=1,r=new Record(a[0],0);
for(var i=1;i<a.length; i++){
if(a[i]==r.element) c++;
else{
d[c]=(c in d)? d[c].concat(r):[r];
if(c>=3) for(var p=r.pos;p<i; p++) a[p]=0;
r=new Record(a[i],i);
c=1;
}
}
document.writeln("<br/>处理后的数组:");
for(var i in a) document.write(a[i]+' ');
document.writeln('<br/>');
for(var k in d){
if(k>=3){
document.writeln(k+"个相同-数(位置): ")
for(var i in d[k])
document.writeln(d[k][i].element+'('+d[k][i].pos+') ');
document.writeln('<br/>');
}
}
</script>
=============
处理前的数组: 1 1 1 2 3 3 3 3 4 5 6 6 6 6 6 7 8 8 8 8 9 10 12 12 13 15
处理后的数组: 0 0 0 2 0 0 0 0 4 5 0 0 0 0 0 7 0 0 0 0 9 10 12 12 13 15
3个相同-数(位置): 1(0)
4个相同-数(位置): 3(4) 8(16)
5个相同-数(位置盯高猜): 6(10)
==========
由于有起始位置,就没必要逐个打印位置。比如
“3个相同-数(位置): 1(0) ”凯型
就知道1从位置0开始重复3次,0, 1, 2
oО绿帽侠

2026-02-04 00:59:57

个人为由拒绝
温柔女人霸气范er

2026-02-28 04:39:19

4
收起 2条折叠回答