Note that there are some explanatory texts on larger screens.

plurals
  1. PO
    primarykey
    data
    text
    <p>Sure you can, you can build a similar example with any type of Vector:</p> <pre><code> public function mergeObjectVectors(v1:Vector.&lt;Object&gt;, v2:Vector.&lt;Object&gt;):Vector.&lt;Object&gt; { var dictionary:Dictionary = new Dictionary(); var concat:Vector.&lt;Object&gt; = v1.concat(v2); var result:Vector.&lt;Object&gt; = new Vector.&lt;Object&gt;(); for each(var i:Object in concat) { if (!dictionary[i]) { dictionary[i] = true; result.push(i); } } return result; } </code></pre> <p>However if you plan on accepting vectors of any type, it's different:</p> <pre><code> public function testing():void { var v1:Vector.&lt;Object&gt; = new Vector.&lt;Object&gt;(); v1.push({name:"Object 1"}); v1.push({name:"Object 2"}); // Vector w duplicates var v2:Vector.&lt;Object&gt; = new Vector.&lt;Object&gt;(); var o:Object = {name:"Object 3"}; v2.push(o); v2.push(o); v2.push(o); var resultVector:Vector.&lt;Object&gt; = mergeAnything(v1, v2, Class(Vector.&lt;Object&gt;)); var resultArray:Array = mergeAnything(v1, v2, Array); var resultObject:Object = mergeAnything(v1, v2, Object); } public function mergeAnything(o1:Object, o2:Object, resultClass:Class):* { var dictionary:Dictionary = new Dictionary(); var result:Object = new resultClass(); var i:int; for each(var o:Object in o1) { if (!dictionary[o]) { dictionary[o] = true; result[i++] = o; } } for each(o in o2) { if (!dictionary[o]) { dictionary[o] = true; result[i++] = o; } } return result; } </code></pre> <p>The first example will be more resource-efficient.</p> <hr> <p>EDIT: This should do it, try it with your example:</p> <pre><code> public function mergeObjectVectors(v1:Vector.&lt;Object&gt;, v2:Vector.&lt;Object&gt;):Vector.&lt;Object&gt; { var concat:Vector.&lt;Object&gt; = v1.concat(v2); var result:Vector.&lt;Object&gt; = new Vector.&lt;Object&gt;(); var n:int = concat.length; loop:for (var i:int = 0; i &lt; n; i++) { var objectToAdd:Object = concat[i]; var m:int = result.length; for (var j:int = 0; j &lt; m; j++) { var addedObject:Object = result[j]; if (this.areObjectsIdentical(objectToAdd, addedObject)) { continue loop; } } result.push(objectToAdd); } return result; } private function areObjectsIdentical(o1:Object, o2:Object):Boolean { var numComparisons:int = 0; for (var s:String in o1) { numComparisons++; if (o1[s] != o2[s]) { return false; } } for (s in o2) { numComparisons--; } return !numComparisons; } </code></pre>
    singulars
    1. This table or related slice is empty.
    plurals
    1. This table or related slice is empty.
    1. This table or related slice is empty.
    1. This table or related slice is empty.
    1. VO
      singulars
      1. This table or related slice is empty.
    2. VO
      singulars
      1. This table or related slice is empty.
    3. VO
      singulars
      1. This table or related slice is empty.
 

Querying!

 
Guidance

SQuiL has stopped working due to an internal error.

If you are curious you may find further information in the browser console, which is accessible through the devtools (F12).

Reload