天天看點

JavaScript數組功能擴充--差集,并集,合集,去重

<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 &lt; </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 &lt; </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 &lt; </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

繼續閱讀