smilevchy
5/25/2015 - 2:58 PM

Collections.js

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;
};