Collections = {};
Collections.filterArray = function(array, filter, justDeleteOne) {
if (!array) {
return [];
}
for (var prop in filter) {
var element = null;
for (var i = array.length - 1; i >= 0; i--) {
element = array[i];
if (typeof element[prop] == "undefined") {
continue;
}
if (element[prop] == filter[prop]) {
array.splice(i, 1);
if (justDeleteOne) {
break;
}
}
}
}
};
Collections.unionArray = function(arrays, filters) {
if (!arrays || arrays.length == 0) {
return [];
}
var resultArray = arrays[0].slice(0);
var array = null;
for (var i = 1, s1 = arrays.length; i < s1; i++) {
array = arrays[i];
var tmpArray = [];
var element = null;
for (var j = 0, s2 = array.length; j < s2; j++) {
element = array[j];
var identical = false;
for (var k = 0, s3 = resultArray.length; k < s3; k++) {
for (var index in filters) {
if (element[filters[index]] != resultArray[k][filters[index]]) {
break;
}
if (filters.length - 1 == index) {
identical = true;
}
}
if (identical) {
break;
}
}
if (!identical) {
tmpArray.push(element);
}
}
resultArray = resultArray.concat(tmpArray);
}
return resultArray;
};