Proprement fusionner deux tableaux en ActionScript 3.0)?
Ce qui est une belle façon de fusionner deux tableaux triés en ActionScript (spécifiquement ActionScript 3.0)? Le tableau doit être trié et sans doublons.
Légèrement plus rapide: (vous pouvez faire une boucle à travers les tableaux-vous et utilisez Array.indexOf() pour vérifier les doublons)
var a1:Array=["a","b","c"];var a2:Array=["c","b","x","y"];var a3:Array=["a","x","x","y","z"];var c:Array= arrConcatUnique(a1, a2, a3);//result: ["a", "b", "c", "x", "y", "z"]privatefunction arrConcatUnique(...args):Array{var retArr:Array=newArray();for each (var arg:* in args){if(arg is Array){for each (var value:* in arg){if(retArr.indexOf(value)==-1)
retArr.push(value);}}}return retArr;}
Il a demandé un "gentil"...:) Ok, peut-être l'autre façon que j'ai ajouté dans la réponse pourrait être considéré comme "plus belle' Merci, a travaillé comme un charme.
À L'Aide Du Tableau.indexOf pour détecter les doublons va être lente et douloureuse si vous avez une Liste contenant un grand nombre d'éléments; une façon plus rapide de retrait duplciates serait de jeter le contenu du Tableau dans un Ensemble après la concaténation.
//Combine the two Arrays.const combined :Array= a.concat(b);//Convert them to a Set; this will knock out all duplicates.constset:Object={};//use a Dictionary if combined contains complex types.const len : uint = combined.length;for(var i : uint =0; i < len; i++){set[combined[i]]=true;}//Extract all values from the Set to produce the final result.const result :Array=[];for(var prop :* in set){
result.push[prop];}
Si votre programme utilise de façon intensive les Collections puis si il peut être prudent de faire usage de l'un des nombreux AS3 Collections de cadres qui fournissent une interface simple pour la manipulation de données et sera toujours de prendre l'approche optimale quand il s'agit de la mise en œuvre.
function remDuplicates(_array:Array):void{for(var i:int=0; i < _array.length;++i){var index:int= _array.indexOf(_array[i]);if(index !=-1&& index != i){
_array.splice(i--,1);}}}
Puis pour la "fusion" utilisation concat.
exemple :
var testArray:Array=[1,1,1,5,4,5,5,4,7,2,3,3,6,5,8,5,4,2,4,5,1,2,3,65,5,5,5,5,8,4,7];var testArray2:Array=[1,1,1,5,4,5,5,4,7,2,3,3,6,5,8,5,4,2,4,5,1,2,3,65,5,5,5,5,8,4,7];
testArray.concat(testArray2);
trace(testArray);
remDuplicates(testArray);
trace(testArray);
De fusion (concaténer) des tableaux, utiliser
.concat()
.Ci-dessous, deux exemples de la façon dont vous pouvez concaténer des tableaux et supprimer les doublons dans le même temps.
Plus pratique: (vous pouvez utiliser
ArrayUtil.createUniqueCopy()
de as3corelib)Légèrement plus rapide: (vous pouvez faire une boucle à travers les tableaux-vous et utilisez
Array.indexOf()
pour vérifier les doublons)Ok, peut-être l'autre façon que j'ai ajouté dans la réponse pourrait être considéré comme "plus belle'
Merci, a travaillé comme un charme.
OriginalL'auteur hasseg
C'est le genre d'un algorithme simple à écrire. Je serais surpris s'il y avait un moyen plus direct pour ce faire, dans Actionscript.
OriginalL'auteur Tmdean
À L'Aide Du Tableau.indexOf pour détecter les doublons va être lente et douloureuse si vous avez une Liste contenant un grand nombre d'éléments; une façon plus rapide de retrait duplciates serait de jeter le contenu du Tableau dans un Ensemble après la concaténation.
Si votre programme utilise de façon intensive les Collections puis si il peut être prudent de faire usage de l'un des nombreux AS3 Collections de cadres qui fournissent une interface simple pour la manipulation de données et sera toujours de prendre l'approche optimale quand il s'agit de la mise en œuvre.
result.push[prop]
tho. Devrait êtreresult.push(prop)
OriginalL'auteur JonnyReeves
Puis pour la "fusion" utilisation concat.
exemple :
OriginalL'auteur raph
Veuillez suivre les ci-dessous étape pour obtenir votre réponse:
Retourné "ansArr" seront triés et sans double tableau fusionné deux tableau.
OriginalL'auteur Mrugesh