/**
* 각각은 함수를 매개변수와 선택적 매개변수의 집합으로 받아들이는 집합 반복 함수입니다.
* 이 반복 함수는 함수를 이용하여 집합의 각 요소와 선택적 매개변수를 순차적으로 계산하고, 결과 집합을 계산합니다. 반환된 값은
{%example
<script> <br>var a = [1,2,3,4].each(function(x){return x > 2 ? x : null })입니다. <br>var b = [1,2,3,4].each(function(x){return x alert(a) <br>alert (b) ; <br></script>
%}
* @param {Function} fn 반복 결정을 위한 함수
* @param more ... 0개 이상의 선택적 사용자 정의 매개변수
* @returns {Array} 결과 집합, 결과가 없으면 빈 집합 반환
*/
Array.prototype. 각각 = 함수(fn){
fn = fn || 함수.K;
var a = [];
var args = Array.prototype.slice.call(인수, 1);
for(var i = 0; i < this.length; i ){
var res = fn.apply(this,[this[i],i].concat(args));
if(res != null) a.push(res);
}
return a;
};
/**
* 배열에서 반복되지 않는 요소의 컬렉션 가져오기
* 고유한 배열
* @returns {Array} 반복되지 않는 요소로 구성된 배열
*/
Array.prototype.uniquelize = function(){
var ra = new Array();
for(var i = 0; i < this.length; i ){
if(!ra.contains(this[i])){
ra.push(this[i]);
}
}
return ra;
};
/**
* 두 집합의 보수 구하기
{%example
<script> <br>var a = [1,2,3,4] <br>var b = [3,4 , 5,6]; <br>alert(Array.complement(a,b)); <br></script>
%}
* @param {Array} 세트 A
* @ param {Array} b 세트 B
* @returns {Array} 두 세트의 보수
*/
Array.complement = function(a, b){
return Array.minus(Array.union(a, b),Array.intersect(a) , b));
};
/**
* 두 집합의 교집합 찾기
{%example
<script> <br>var a = [1,2,3,4] <br>var b = [3,4, 5,6]; <br>alert(Array.intersect(a,b)); <br></script>
%}
* @param {Array} 세트 A
* @ param {Array} b 세트 B
* @returns {Array} 두 세트의 교집합
*/
Array.intersect = function(a, b){
return a.uniquelize().each(function(o){return b.contains( o) ? o : null});
};
/**
* 두 세트의 차이점 찾기
{%example
<script> <br>var a = [1,2,3,4] <br>var b = [3,4 , 5,6]; <br>alert(Array.minus(a,b)); <br></script>
%}
* @param {Array} 세트 A
* @ param {Array} b 세트 B
* @returns {Array} 두 세트의 차이
*/
Array.minus = function(a, b){
return a.uniquelize().each(function(o){return b.contains( o) ? null : o});
};
/**
* 두 집합의 합집합 찾기
{%example
<script> <br>var a = [1,2,3,4] <br>var b = [3,4 , 5,6]; <br>alert(Array.union(a,b)); <br></script>
%}
* @param {Array} 세트 A
* @ param {Array} b 세트 B
* @returns {Array} 두 세트의 합집합
*/
Array.union = function(a, b){
return a.concat(b).uniquelize();
};