unionBy function

List unionBy(
  1. List array,
  2. List values,
  3. Function iteratee
)

This method is like _.union except that it accepts iteratee which is invoked for each element of each arrays to generate the criterion by which uniqueness is computed. Result values are chosen from the first array in which the value occurs. The iteratee is invoked with one argument:

Implementation

List unionBy(List array, List values, Function iteratee) {
  var seen = <dynamic>{};
  var result = [];
  for (var element in array) {
    var computed = iteratee(element);
    if (!seen.contains(computed)) {
      seen.add(computed);
      result.add(element);
    }
  }
  for (var value in values) {
    var computed = iteratee(value);
    if (!seen.contains(computed)) {
      seen.add(computed);
      result.add(value);
    }
  }
  return result;
}