这段javascript代码里面的循环逻辑思维弄不明白,请大家帮忙解释下,谢谢了!
发布网友
发布时间:2022-04-24 22:31
我来回答
共3个回答
热心网友
时间:2022-04-25 00:00
你说说你,才赏5分,也未免太扣了吧!
我给你详细解释一下这个的实现意思:
for(var i=0;i<this.length;i++)
{
arr.push(this.splice(i--,1));
for(var j=0;j<this.length;j++)
{
if(this[j]==arr[arr.length-1])
{
this.splice(j--,1)
}
}
}
就看这段代码,
arr.push(this.splice(i--,1));
这个意思就是把当前你操作的这个数组里的第一个元素移到arr数组里,i--后赋值为-1,当次循环结束再给i++,也就说i的值一直都是零,一直都在把第一个元素移掉,这句话等同于
arr.push(this.pop());
也就是说第一层循环for(var i=0;i<this.length;i++)完全可以写成
while(this.length>0){
arr.push(this.pop());
至于第二个循环,就不用我说了吧?
热心网友
时间:2022-04-25 01:18
<script language="javascript" type="text/javascript">
Array.prototype.strip=function()
{
if(this.length<2) return [this[0]]||[];
var arr=[];
for(var i=0;i<this.length;i++)
{
arr.push(this.splice(i--,1));
for(var j=0;j<this.length;j++)
{
if(this[j]==arr[arr.length-1])
{
this.splice(j--,1)
}
}
}
return arr;
}
var arr=['a','b','c','b','a','d'];
alert(arr.strip());
</script>
这段代码是通过prototype属性给Array对象增加一个用户自己写的方法strip(),可以用来消除数组中重复项。
大概的方法是把这个数组赋值给arr.
然后通过一个双重循环来验证是否重复。
外面一个for用来push到arr,然后厘米一个for开始验证里面是否有和arr一致的项,有就splice()移除掉。