AngularJSのフィルターで配列やオブジェクトを複数統合するサンプル

concat:bar

<li ng-repeat="item in foo | concat:bar">{{item.name}}</li>
app.filter('concat', [function () {
  return function (collection, joined) {
    if (isUndefined(joined)) {
      return collection;
    }
    if (isArray(collection)) {
      return (isObject(joined))
        ? collection.concat(toArray(joined))
        : collection.concat(joined);
    }
    if (isObject(collection)) {
      var array = toArray(collection);
      return (isObject(joined))
        ? array.concat(toArray(joined))
        : array.concat(joined);
    }
    return collection;
  };
}]);

concatMulti:bar:hoge

<li ng-repeat="item in foo | concatMulti:bar:hoge">{{item.name}}</li>
app.filter('concatMulti', [function () {
  return function (collection, joined) {
    if (isUndefined(joined)) {
      return collection;
    }
    var result = [];
    for (var i = 1; i < arguments.length; i++) {
      result = (isObject(arguments[i]))
        ? result.concat(toArray(arguments[i]))
        : result.concat(arguments[i]);
    }
    if (isArray(collection)) {
      return (isObject(result))
        ? collection.concat(toArray(result))
        : collection.concat(result);
    }
    if (isObject(collection)) {
      var array = toArray(collection);
      return (isObject(result))
        ? array.concat(toArray(result))
        : array.concat(result);
    }
    return collection;
  };
}]);

other script

var app = angular.module('app', []),
    isDefined = angular.isDefined,
    isUndefined = angular.isUndefined,
    isObject = angular.isObject,
    isArray = angular.isArray;

function toArray(object) {
  return isArray(object) ? object :
    Object.keys(object).map(function (key) {
      return object[key];
    });
}

app.controller('Ctrl', function ($scope) {
  $scope.foo = [
    {
      name: 'foo1'
    },
    {
      name: 'foo2'
    }
  ];
  $scope.bar = [
    {
      name: 'bar1'
    },
    {
      name: 'bar2'
    }
  ];
  $scope.hoge = [
    {
      name: 'hoge1'
    },
    {
      name: 'hoge2'
    }
  ];
});