<?xml version="1.0" encoding="UTF-8"?><rss version="2.0">
<channel>
<title>union</title>
<link>http://www.computersight.com/tags/union</link>
<description>New posts about union</description>
<item>
<title>Six Functions Missing From Javascript Arrays</title>
<link>http://www.computersight.com/Programming/JavaScript/Six-Functions-Missing-From-Javascript-Arrays.140073</link>
<description>
<![CDATA[<p><p>JavaScript is a computer programming language that most often runs inside a web browser as part of a web page.  It is a simple yet powerful interpreted language that includes several built-in classes and functions.  One of these built-in classes is the Array class which has powerful functions such as concat, sort, slice, and splice.  However, there are several useful functions, linearSearch, binarySearch, retainAll, and removeAll, that were not included in the Array class.  This article shows you how to add these four useful functions plus two other convenience functions, addAll and contains, to the JavaScript Array class.  If you put these functions in a JavaScript file named array.js, you will be able to include and use them in a web page whenever you want.</p>
 
 <p><h2>Descriptions of the Functions</h2></p>
 
 <p><p>The linearSearch function searches an array for an occurrence of some value called a key.  It searches the array from the beginning to the end of the array, stopping when it finds the key or reaches the end of the array.  If the key is stored in the array, the linearSearch function returns the index of the first occurrence of the key.  Otherwise, it returns -1.  linearSearch works well for arrays that are small (perhaps less than 100 elements).</p></p>
 
 <p><p>If the elements in an array are sorted, then the computer can use a faster algorithm called binary search to find an element within that array.  The binarySearch function works by comparing the key to the middle most element in the array.  If the key is less than the middle most element, then the search is repeated in the first half of the array.  If the key is greater than the middle most element, then the search is repeated in the last half of the array.  Of course, if the key is equal to the middle most element, then the key has been found and the search is done.  This process of comparing the key to the middle most element of the current interval is repeated until the key is found or the interval has shrunk to only 1 element.  If that one element is not the same as the key, then the key is not present in the array.</p></p>
 
 <p><p>The contains function is similar to linearSearch.  However, the contains function returns true if the key is stored in the array and returns false otherwise.  This is different from the linearSearch and binarySearch functions which both return the index where the key is stored in the array.</p></p>
 
 <p><p>The addAll function is similar to the built-in concat function, but the addAll function adds elements to an existing array instead of returning a new array as the concat function does.  The addAll function can be used to compute the union of arrays.</p></p>
 
 <p><p>The retainAll function retains in an array all the elements that are also contained in a second array.  This is similar to computing the intersection of the two arrays.</p></p>
 
 <p><p>The removeAll function removes from an array all the elements that are also contained in another array.  This is similar to computing the complement of the first array relative to the second.</p></p>
 
 <p><h2>The Six Missing Functions</h2></p>
 
 <p><p>Here are the six missing JavaScript Array functions.  Copy these functions into a text file named array.js.  Notice that all the functions except addAll have an optional parameter which is a comparison function.  If your program is storing complex objects in arrays, you can write your own comparison function to compare the objects any way you like.</p></p>
 
 <p><p></p>
 <p>/** If this array contains key, returns the index of<br /></p>
 <p>&amp;nbsp;* the first occurrence of key; otherwise returns -1. */<br /></p>
 <p>Array.prototype.linearSearch = function(key, compare) {<br /></p>
 <p>&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;if (typeof(compare) == "undefined") {<br /></p>
 <p>&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;compare = simpleCompare;<br /></p>
 <p>&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}<br /></p>
 <p>&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;for (var i = 0;  i &amp;lt; this.length;  i++) {<br /></p>
 <p>&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;if (compare(this[i], key) == 0) {<br /></p>
 <p>&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;return i;<br /></p>
 <p>&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}<br /></p>
 <p>&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}<br /></p>
 <p>&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;return -1;<br /></p>
 <p>}<br /></p>
 <p><br /></p>
 <p><br /></p>
 <p>/** If this array contains key, returns the index of<br /></p>
 <p>&amp;nbsp;* any occurrence of key; otherwise returns -1.<br /></p>
 <p>&amp;nbsp;* Assumes this array is already sorted. */<br /></p>
 <p>Array.prototype.binarySearch = function(key, compare) {<br /></p>
 <p>&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;if (typeof(compare) == "undefined") {<br /></p>
 <p>&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;compare = simpleCompare;<br /></p>
 <p>&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}<br /></p>
 <p>&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;var left = 0;<br /></p>
 <p>&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;var right = this.length - 1;<br /></p>
 <p>&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;while (left &amp;lt;= right) {<br /></p>
 <p>&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;var mid = left + Math.floor((right - left) / 2);<br /></p>
 <p>&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;var cmp = compare(key, this[mid]);<br /></p>
 <p>&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;if (cmp &amp;lt; 0)<br /></p>
 <p>&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;right = mid - 1;<br /></p>
 <p>&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;else if (cmp &amp;gt; 0)<br /></p>
 <p>&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;left = mid + 1;<br /></p>
 <p>&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;else<br /></p>
 <p>&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;return mid;<br /></p>
 <p>&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}<br /></p>
 <p>&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;return -1;<br /></p>
 <p>}<br /></p>
 <p><br /></p>
 <p><br /></p>
 <p>/** Returns true if this array contains<br /></p>
 <p>&amp;nbsp;* key; otherwise returns false. */<br /></p>
 <p>Array.prototype.contains = function(key, compare) {<br /></p>
 <p>&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;return this.linearSearch(key, compare) != -1;<br /></p>
 <p>}<br /></p>
 <p><br /></p>
 <p><br /></p>
 <p>/** Adds all the elements in the<br /></p>
 <p>&amp;nbsp;* specified arrays to this array. */<br /></p>
 <p>Array.prototype.addAll = function() {<br /></p>
 <p>&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;for (var a = 0;  a &amp;lt; arguments.length;  a++) {<br /></p>
 <p>&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;arr = arguments[a];<br /></p>
 <p>&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;for (var i = 0;  i &amp;lt; arr.length;  i++) {<br /></p>
 <p>&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;this.push(arr[i]);<br /></p>
 <p>&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}<br /></p>
 <p>&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}<br /></p>
 <p>}<br /></p>
 <p><br /></p>
 <p><br /></p>
 <p>/** Retains in this array all the elements<br /></p>
 <p>&amp;nbsp;* that are also found in the specified array. */<br /></p>
 <p>Array.prototype.retainAll = function(arr, compare) {<br /></p>
 <p>&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;if (typeof(compare) == "undefined") {<br /></p>
 <p>&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;compare = simpleCompare;<br /></p>
 <p>&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}<br /></p>
 <p>&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;for (var i = 0;  i &amp;lt; this.length;  i++) {<br /></p>
 <p>&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;if (arr.contains(this[i], compare) == false) {<br /></p>
 <p>&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;var end = i + 1;<br /></p>
 <p>&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;while (end &amp;lt; this.length &amp;amp;&amp;amp;<br /></p>
 <p>&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;arr.contains(this[end], compare) == false) {<br /></p>
 <p>&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;end++;<br /></p>
 <p>&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}<br /></p>
 <p>&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;this.splice(i, end - i);<br /></p>
 <p>&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}<br /></p>
 <p>&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;else {<br /></p>
 <p>&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;i++;<br /></p>
 <p>&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}<br /></p>
 <p>&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}<br /></p>
 <p>}<br /></p>
 <p><br /></p>
 <p><br /></p>
 <p>/** Removes from this array all the elements<br /></p>
 <p>&amp;nbsp;* that are also found in the specified array. */<br /></p>
 <p>Array.prototype.removeAll = function(arr, compare) {<br /></p>
 <p>&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;if (typeof(compare) == "undefined") {<br /></p>
 <p>&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;compare = simpleCompare;<br /></p>
 <p>&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}<br /></p>
 <p>&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;var i = 0;<br /></p>
 <p>&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;while (i &amp;lt; this.length) {<br /></p>
 <p>&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;if (arr.contains(this[i], compare)) {<br /></p>
 <p>&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;var end = i + 1;<br /></p>
 <p>&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;while (end &amp;lt; this.length &amp;amp;&amp;amp;<br /></p>
 <p>&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;arr.contains(this[end], compare)) {<br /></p>
 <p>&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;end++;<br /></p>
 <p>&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}<br /></p>
 <p>&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;this.splice(i, end - i);<br /></p>
 <p>&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}<br /></p>
 <p>&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;else {<br /></p>
 <p>&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;i++;<br /></p>
 <p>&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}<br /></p>
 <p>&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}<br /></p>
 <p>}<br /></p>
 <p><br /></p>
 <p><br /></p>
 <p>/** Compares two objects using<br /></p>
 <p>&amp;nbsp;* built-in JavaScript operators. */<br /></p>
 <p>function simpleCompare(a, b) {<br /></p>
 <p>&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;if (a &amp;lt; b)<br /></p>
 <p>&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;return -1;<br /></p>
 <p>&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;else if (a &amp;gt; b)<br /></p>
 <p>&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;return 1;<br /></p>
 <p>&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;return 0;<br /></p>
 <p>}<br /></p>
 <p></p></p>
 
 
 <p><h2>Using the Six Missing Functions</h2></p>
 
 <p><p>To use the six functions, include the array.js file that you made in the head of an HTML file like this:</p></p>
 
 <p><p></p>
 <p>&amp;lt;script type="text/JavaScript" src="array.js"&amp;gt;&amp;lt;/script&amp;gt;</p>
 <p></p></p>
 
 <p><p>Then you can write JavaScript to use the functions similar to this:</p></p>
 
 <p><p></p>
 <p>&amp;lt;script type="text/JavaScript"&amp;gt;<br /></p>
 <p>function test() {<br /></p>
 <p>&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;document.open();<br /></p>
 <p><br /></p>
 <p>&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;var setX = [ "apple", "pear", "plum", "peach" ];<br /></p>
 <p>&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;document.writeln('setX:  " + setX + "&amp;lt;br /&amp;gt;');<br /></p>
 <p>&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;var possible = "plum";<br /></p>
 <p>&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;document.writeln('setX.contains(' + possible + ") " +<br /></p>
 <p>&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;setX.contains(possible) + "&amp;lt;br /&amp;gt;");<br /></p>
 <p>&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;possible = "cherry";<br /></p>
 <p>&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;document.writeln('setX.contains(' + possible + ") " +<br /></p>
 <p>&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;setX.contains(possible) + "&amp;lt;br /&amp;gt;");<br /></p>
 <p><br /></p>
 <p>&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;var setW = [ "cherry", "banana", "apricot", "mango" ];<br /></p>
 <p>&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;setX.addAll(setW);<br /></p>
 <p>&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;setX.sort();<br /></p>
 <p>&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;document.writeln('&amp;lt;br /&amp;gt;');<br /></p>
 <p>&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;document.writeln('setX:  " + setX + "&amp;lt;br /&amp;gt;');<br /></p>
 <p>&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;possible = "peach";<br /></p>
 <p>&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;if (setX.binarySearch(possible) != -1)<br /></p>
 <p>&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;document.writeln('setX contains " + possible + "&amp;lt;br /&amp;gt;');<br /></p>
 <p>&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;else<br /></p>
 <p>&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;document.writeln('setX does not contain " + possible + "&amp;lt;br /&amp;gt;');<br /></p>
 <p>&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;possible = "coconut";<br /></p>
 <p>&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;if (setX.binarySearch(possible) != -1)<br /></p>
 <p>&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;document.writeln('setX contains " + possible + "&amp;lt;br /&amp;gt;');<br /></p>
 <p>&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;else<br /></p>
 <p>&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;document.writeln('setX does not contain " + possible + "&amp;lt;br /&amp;gt;');<br /></p>
 <p>&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;<br /></p>
 <p>&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;var setY = [ "elm", "pine", "rose", "lilac" ];<br /></p>
 <p>&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;var setZ = [ "lilac", "pine", "fir" ];<br /></p>
 <p>&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;document.writeln('&amp;lt;br /&amp;gt;');<br /></p>
 <p>&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;document.writeln('setY:  " + setY + "&amp;lt;br/&amp;gt;');<br /></p>
 <p>&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;document.writeln('setZ:  " + setZ + "&amp;lt;br/&amp;gt;');<br /></p>
 <p>&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;setX.addAll(setY, setZ);<br /></p>
 <p>&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;document.writeln('setX.addAll(setY, setZ):  " + setX + "&amp;lt;br /&amp;gt;');<br /></p>
 <p>&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;setY = [ "elm", "pine", "rose", "lilac" ];<br /></p>
 <p>&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;setY.retainAll(setZ);<br /></p>
 <p>&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;document.writeln('setY.retainAll(setZ):  " + setY + "&amp;lt;br /&amp;gt;');<br /></p>
 <p>&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;setY = [ "elm", "pine", "rose", "lilac" ];<br /></p>
 <p>&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;setY.removeAll(setZ);<br /></p>
 <p>&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;document.writeln('setY.removeAll(setZ):  " + setY + "&amp;lt;br /&amp;gt;');<br /></p>
 <p><br /></p>
 <p>&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;document.close();<br /></p>
 <p>}<br /></p>
 <p>&amp;lt;/script&amp;gt;<br /></p>
 <p></p></p><a href="http://www.pheedo.com/click.phdo?x=&u=http%3A%2F%2Fwww.computersight.com%2FProgramming%2FJavaScript%2FSix-Functions-Missing-From-Javascript-Arrays.140073"><img src="http://www.pheedo.com/img.phdo?x=&u=http%3A%2F%2Fwww.computersight.com%2FProgramming%2FJavaScript%2FSix-Functions-Missing-From-Javascript-Arrays.140073" border="0"/></a>]]></description>
<pubDate>Tue, 17 Jun 2008 02:04:30 PST</pubDate></item>
<item>
<title>AutoCAD Tutorial 4: Union, Subtract and Intersect Tools</title>
<link>http://www.computersight.com/Software/AutoCAD/AutoCAD-Tutorial-4-Union-Subtract-and-Intersect-Tools.39762</link>
<description>
<![CDATA[<p>Uniting objects allows for multiple objects to become a single object, making modelling less messier and much neater.</p>
 
 <p>Subtracting allows complex objects like a rectangle with a hole through it to be made.</p>
 
 <p>Intersect is used for when 2 objects are drawn over each other and the part(s) where the objects overlapped are kept.</p>
 
 <p><img  alt="" src="http://images.stanzapub.com/readers/computersight/2007/08/14/43865_0.jpg" /></p>
 

<h3> Union:</h3>

 
 <p>In this picture, I have 2 rectangles, a wedge and a cone:</p>
 
 <p><img  alt="" src="http://images.stanzapub.com/readers/computersight/2007/08/14/43865_1.jpg" /></p>
 
 <p>Selected, the lines would appear like this:</p>
 
 <p><img  alt="" src="http://images.stanzapub.com/readers/computersight/2007/08/14/43865_2.jpg" /></p>
 
 <p>Now that looks really messy doesn't it? To change this, select the union tool OR type “_union” then select all the objects:</p>
 
 <p><img  alt="" src="http://images.stanzapub.com/readers/computersight/2007/08/14/43865_3.jpg" /></p>
 
 <p>Then we press ENTER. All these objects will become one big object:</p>
 
 <p><img  alt="" src="http://images.stanzapub.com/readers/computersight/2007/08/14/43865_4.jpg" /></p>
 
 
 
<h3>Subtract:</h3>

 
 <p>In this picture, I have a normal rectangle:</p>
 
 <p><img  alt="" src="http://images.stanzapub.com/readers/computersight/2007/08/14/43865_5.jpg" /></p>
 
 <p>Now I'm going to draw another one intersecting it:</p>
 
 <p><img  alt="" src="http://images.stanzapub.com/readers/computersight/2007/08/14/43865_6.jpg" /></p>
 
 <p>I'm going to make a rectangle with a hole through it like a hole for a door. In order to do this I could draw a lots of rectangles or I could simply use the subtract tool. To do this, click on the subtract tool or type in “_subtract”.</p>
 
 <p><img  alt="" src="http://images.stanzapub.com/readers/computersight/2007/08/14/43865_7.jpg" /></p>
 
 <p>There is a certain order you must select objects. Select the object you are going to subtract FROM, in this case the taller rectangle. Then you press ENTER. Now you select the object you are going to use to subtract, here it is the smaller rectangle. Then you press ENTER and you are left with this:</p>
 
 <p><img  alt="" src="http://images.stanzapub.com/readers/computersight/2007/08/14/43865_8.jpg" /></p>
 
 

<h3> Intersect:</h3>

 
 <p>In this picture I have a sphere and a rectangle intersecting:</p>
 
 <p><img  alt="" src="http://images.stanzapub.com/readers/computersight/2007/08/14/43865_9.jpg" /></p>
 
 <p>For some odd reason I want the part that is overlapping ONLY. To do this, select the intersect tool or type “_intersect”. I then select both objects and press ENTER and I'm left with this:</p>
 
 <p><img  alt="" src="http://images.stanzapub.com/readers/computersight/2007/08/14/43865_10.jpg" /></p>
 
 <p>I hope you have learnt something from this tutorial!</p>


 <p>Note: If you accidentally select the wrong object, you can unselect it by holding SHIFT and clicking on the selected object.</p><a href="http://www.pheedo.com/click.phdo?x=&u=http%3A%2F%2Fwww.computersight.com%2FSoftware%2FAutoCAD%2FAutoCAD-Tutorial-4-Union-Subtract-and-Intersect-Tools.39762"><img src="http://www.pheedo.com/img.phdo?x=&u=http%3A%2F%2Fwww.computersight.com%2FSoftware%2FAutoCAD%2FAutoCAD-Tutorial-4-Union-Subtract-and-Intersect-Tools.39762" border="0"/></a>]]></description>
<pubDate>Thu, 26 Jul 2007 08:05:01 PST</pubDate></item>
</channel>
</rss>
