AS3で配列の中の重複を取り除いてユニークな配列にする処理

金曜日, 9月 11th, 2009

こんにちは、なかわけです。

AS3に配列内をユニークにして返してくれる処理がなかったので、いろいろ調べながら作った。
使い方によってはユニーク化にもグループ化にもできる。


var nekoArr:Array = [
{color:’white’, sex:’male’, age:’1′},
{color:’black’, sex:’female’, age:’3′},
{color:’kiji’, sex:’male’, age:’2′},
{color:’white’, sex:’male’, age:’5′},
{color:’black’, sex:’female’, age:’4′}
];

function uniqueNeko(arr:Array):Array
{
var tmpObj:Object = new Object();
var uniqueArr:Array = new Array();
for (var i:uint = 0; i < arr.length; i++) { var property:String = arr[i]['color'] + arr[i]['sex']; if (!(property in tmpObj)) { tmpObj[property] = true; uniqueArr.push(arr[i]); } } return uniqueArr; } uniqueNeko(nekoArr); [/as3] 色とオスメスでグループ化したいとき(年齢は無視)、colorとsexの値を結合して文字列にしtmpObjのプロパティにするところがミソ。 tmpObj[property]にtrueを入れているけど、trueである必要はなく空文字でもなんでもいいです。プロパティを追加することに意味があるので。 たぶん、これでOKじゃないかなー。おかしかったらコメントください。

Tags: , ,

Leave a Reply

*