下面是我自己寫的,剛學完js練練手。
調試過,發現tmp等於數組裡的第二個1 並且arr1[0]等於1時,不等的條件語句竟然進去了
何解啊?
//////////////////////////////////////我簡化了我的問題
<script type="text/javascript">
var tmp='';
var arr=[1,2,'abc',1];
var arr1=[];
tmp=arr.splice(0,1);
arr1.push(tmp);
//tmp=arr.splice(2,1); //先注釋這句運行一遍,在不注釋運行一遍
if (tmp!=arr1[0])
{
alert('tmp是:'+tmp+' '+'arr1[0]是:'+arr1[0]);
alert('不等於');
};
alert('tmp的類型是:'+typeof(tmp)+' arr[0]的類型是:'+typeof(arr1[0]));
</script>
////////////////////////////////取消注釋 在運行 結果就通過條件了,為什麼呢!!
麻煩各位幫我看看問題出在哪了,謝謝各位了。
var arr=[1,2,'abc',1,3,'abc'];
alert(deleteRepeatElement(arr));
function deleteRepeatElement(arr)
{
var arr1=[];
var tmp='';//存放用
var a=0;//計數用
for (var i = 0; i < arr.length; i++)
{
tmp=arr.splice(0,1);
if(arr1.length==0)//將最開始的數組得第一個元素放入arr1
{
arr1.push(tmp);
tmp='';
}
else
{
for (var j = 0; j < arr1.length; j++)
{
if(tmp!=arr1[j]) //這裡有問題!!!當tmp等於arr的第四個1的時候竟然進來了!
{
a++;
}
}
if(a==arr1.length)
{
arr1.push(tmp);
}
tmp='';
i=-1;
a=0;
}
}
return arr1;
}
splice返回的是數組,不是數字。數組和數組對比除非你引用的是同一個,即使內容一樣也不是對等的。。
arr1.push(tmp);
alert(JSON.stringify(arr1))//[[1]]