實(shí)現(xiàn)過濾數(shù)組中的相同元素。方法一:
var
myArr:Array=[1,2,3,4,5,1,1,3,5,4,2,1,3,2,2,5];
trace(filterArray(myArr));
//輸出:1,2,3,4,5
function filterArray(arr:Array):Array
{
var tempArr:Array=[];
var l:uint=arr.length;
for (var i:uint=0;i<l;i++) {
if (tempArr.indexOf(arr[i])==-1)
{
//在新的數(shù)組里搜索是否存在相同元素,如果不存在加進(jìn)新的數(shù)組里
tempArr.push(arr[i]);
}
}
return tempArr;
}
==========================================================
方法二:
var
arr:Array=["aa","bb","cc","dd","bb","cc","aa","bb","gg","aa","cc"];
function formatX(arr:Array):Array
{
var obj:Object={};
return arr.filter(function(item:*, index:int,
array:Array):Boolean{
return !obj[item]?obj[item]=true:false
});
}
trace(formatX(arr))
//該方法的實(shí)現(xiàn)過程是 對(duì)于”aa”來講 obj["aa"]的值為undefined
而!undefined為true,就會(huì)返回該成員,然后
將obj["aa"]的值設(shè)為true,下一次遇到obj["aa"]時(shí),obj["aa"]的值為true,!obj["aa"]的值就為false,就不返回該成員。
================================================================================
//方法一,普通遍歷(這個(gè)方法還不完善,比如刪除掉某個(gè)索引的值,那么后邊所有項(xiàng)的索引全部減1,但是下一次遍歷時(shí)仍然是從這個(gè)被刪除的位置加1,這樣就漏掉了一個(gè)剛剛因?yàn)樗饕禍p少而占據(jù)在被刪索引的項(xiàng)。比如[1,1,1,1,1,1,1]遍歷后變成[1,1,1]而不是[1])
function
myArray_Unique(myArray)
{
//var myArray=new
Array("a","a","c","a","c","d","e","f","f","g","h","g","h","k");
var
haha=myArray;
for(var
i=0;i<myArray.length;i++)
{
for(var j=0;j<myArray.length;j++)
{
temp=myArray[i];
if((i+j+1)<myArray.length&&temp==myArray[i+j+1])
//如果當(dāng)前元素與后一個(gè)元素相等
haha.splice(i+j+1,1); //然后就移除下一個(gè)元素
}
}
return
haha;
}
//方法二(ok)
function getUnique(someArray)
{
tempArray=someArray.slice(0);//復(fù)制數(shù)組到臨時(shí)數(shù)組
for(var i=0;i<tempArray.length;i++)
{
for(var j=i+1;j<tempArray.length;)
{
if(tempArray[j]==tempArray[i])
//后面的元素若和待比較的相同,則刪除并計(jì)數(shù);
//刪除后,后面的元素會(huì)自動(dòng)提前,所以指針j不移動(dòng)
{
tempArray.splice(j,1);
}
else
{
j++;
}
//不同,則指針移動(dòng)
}
}
return tempArray;
}
//方法三 正則表達(dá)式 -- 適用于字符型數(shù)組
function getUnique2(A)
{
var str = "\x0f"+ A.join("\x0f");
while(/(\w+)[^\1]*\1/.test(str))
str = str.replace("\x0f"+ RegExp.$1, "");
return str.substr(1).split("\x0f");
}
//方法四 關(guān)聯(lián)結(jié)構(gòu)
Array.prototype.unique =
array_unique;
function array_unique()
{
var o = new Object();
for (var i=0,j=0; i<this.length; i++)
{
if (typeof o[this[i]] == 'undefined')
{
o[this[i]] = j++;
}
}
this.length = 0;
for (var key in o)
{
this[o[key]] = key;
}
return this;
}
|