如何從Javascript的Array中篩選出唯一的元素?

這是我今天寫CASE的時候遇到的問題,jQuery中有個$.unique函數,但發現這只能針對DOM元素才有效,也就是說對於陣列內的文字或數字是沒有作用的。後來考慮到將來有需求,於是就自己寫了一個函數,(包裝成API? 這函數實在太小,等我累積了很多程式碼後再說吧... :P )。

下列的方法程式碼真的很小,有需要的請歡迎大家多利用與討論...


函式:


function uniqueArray(arr) {
var obj = {};
var uniarray = [];
for (var key in arr) { obj[arr[key]]=1; }
for (var key in obj) { uniarray.push(key); }
return uniarray;
}



使用範例:

var ss = [123, 789, 123, 123, 789, 789, 456, 123, 789, 789, 456];
ss = uniqueArray(ss);
alert(ss.sort().join("|"));


結果得到: 123|456|789

感謝player的指教,提供了我更簡捷的寫法...!!

1 則留言:

  1. var ss = [123,789,123,123,789,789,456,123,789,789,456];

    var uniqueArray = [];
    for (var key in ss) { uniqueArray[ss[key]]=1; }

    ss = [];
    for (var key in uniqueArray) {ss.push(key)}

    alert(ss.sort().join("|"));

    回覆刪除