<code>//数组功能扩展</code>
<code>Array.prototype.each = </code><code>function</code><code>(fn){ </code>
<code> </code><code>fn = fn || Function.K; </code>
<code> </code><code>var</code> <code>a = []; </code>
<code> </code><code>var</code> <code>args = Array.prototype.slice.call(arguments, 1); </code>
<code> </code><code>for</code><code>(</code><code>var</code> <code>i = 0; i < </code><code>this</code><code>.length; i++){ </code>
<code> </code><code>var</code> <code>res = fn.apply(</code><code>this</code><code>,[</code><code>this</code><code>[i],i].concat(args)); </code>
<code> </code><code>if</code><code>(res != </code><code>null</code><code>) a.push(res); </code>
<code> </code><code>} </code>
<code> </code><code>return</code> <code>a; </code>
<code>}; </code>
<code>//数组是否包含指定元素</code>
<code>Array.prototype.contains = </code><code>function</code><code>(suArr){</code>
<code> </code><code>for</code><code>(</code><code>var</code> <code>i = 0; i < </code><code>this</code><code>.length; i ++){ </code>
<code> </code><code>if</code><code>(</code><code>this</code><code>[i] == suArr){</code>
<code> </code><code>return</code> <code>true</code><code>;</code>
<code> </code><code>} </code>
<code> </code><code>} </code>
<code> </code><code>return</code> <code>false</code><code>;</code>
<code>}</code>
<code>//不重复元素构成的数组</code>
<code>Array.prototype.uniquelize = </code><code>function</code><code>(){ </code>
<code> </code><code>var</code> <code>ra = </code><code>new</code> <code>Array(); </code>
<code> </code><code>for</code><code>(</code><code>var</code> <code>i = 0; i < </code><code>this</code><code>.length; i ++){ </code>
<code> </code><code>if</code><code>(!ra.contains(</code><code>this</code><code>[i])){ </code>
<code> </code><code>ra.push(</code><code>this</code><code>[i]); </code>
<code> </code><code>} </code>
<code> </code><code>return</code> <code>ra; </code>
<code>};</code>
<code>//两个数组的补集 </code>
<code>Array.complement = </code><code>function</code><code>(a, b){ </code>
<code> </code><code>return</code> <code>Array.minus(Array.union(a, b),Array.intersect(a, b)); </code>
<code>//两个数组的交集 </code>
<code>Array.intersect = </code><code>function</code><code>(a, b){ </code>
<code> </code><code>return</code> <code>a.uniquelize().each(</code><code>function</code><code>(o){</code><code>return</code> <code>b.contains(o) ? o : </code><code>null</code><code>}); </code>
<code>//两个数组的差集</code>
<code>Array.minus = </code><code>function</code><code>(a, b){ </code>
<code> </code><code>return</code> <code>a.uniquelize().each(</code><code>function</code><code>(o){</code><code>return</code> <code>b.contains(o) ? </code><code>null</code> <code>: o}); </code>
<code>//两个数组并集</code>
<code>Array.union = </code><code>function</code><code>(a, b){ </code>
<code> </code><code>return</code> <code>a.concat(b).uniquelize(); </code>
<code></code>
本文转自 梦朝思夕 51CTO博客,原文链接:http://blog.51cto.com/qiangmzsx/1549392