小白一枚,还请不要见笑!还是关于数组去重的小问题,用的打擂法好像,以下是代码:
var arr=[1,3,1,2,3,4];
for(var i = 0;i<arr1.length;i++){
for(var j=i+1;j<arr1.length;j++){
if (arr[i]==arr[j]){
arr.splice(j,1);
j--;
}
}
}
console.log(arr);
结果是我想要的,前三行上逻辑,写法都没问题能够理解,将下标[0]的字符与后面作比较,重复数字的删除掉。
第四行代码arr.splice(j,1);这行代码不太懂,求解答!!
splice(index,num)函数是js中数组的一个增/删元素的函数。意思就是,arr.splice(j,1);就是将arr数组中下标为j的元素删除。
那么j后面的1是number类型,表明删除1个是嘛?
@菲林科: 对。
那用 i和i+1行吗 删除一个i
@朝阳升: 这种两层循环的,一般都处理内部循环的。要删除外部循环的i的话,就要退出内部循环,重新开始外部循环
@授之以渔: 哦,谢谢
@朝阳升: 能帮我看看这个嘛?一个模仿滚动条的JS,这是代码!
<head> <style> *{margin:0; padding: 0;} #box{ width: 30px; height: 350px; position: relative; background: red; } #pox{ width: 30px; height: 30px; position: absolute; background: blue; } </style> <script> var oPox=document.getElementById('pox'); var oBox=document.getElementById('box'); oPox.onmousedown=function(evt){ var e = evt||event; var disY=e.clientY-this.offsetTop; document.onmousemove=function(evt){ var e=evt||event; var t=e.clientY-disY; if(t<0){ t=0; }else if(t>oBox.offsetHeight-oPox.offsetHeight){ t=oBox.offsetHeight-oPox.offsetHeight; } } } </head> <body> <div id="box"> <div id="pox"></div> </div> </body>
但光是一个onmousedown就一直报错,请问是哪里的问题?
var a=[1,3,4,3,6,7,8,5,4,6];
var b=[];
for(i=a.length;i--; i>-1){
if(b.indexOf(a[i])<0){
b.push(a[i]);
}
}
document.write(b+"<br/>");