heyujie
2021-05-24 4885600ecc369aa2e30a65de8dd7a410f13c34df
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
"use strict";
 
var value    = require("../../object/valid-value")
  , aFrom    = require("../from")
  , toArray  = require("../to-array")
  , contains = require("./contains")
  , byLength = require("./_compare-by-length")
  , filter   = Array.prototype.filter
  , push     = Array.prototype.push;
 
module.exports = function (/* …lists*/) {
    var lists, seen, result;
    if (!arguments.length) return aFrom(this);
    push.apply((lists = [this]), arguments);
    lists.forEach(value);
    seen = [];
    result = [];
    lists.sort(byLength).forEach(function (list) {
        result = result
            .filter(function (item) { return !contains.call(list, item); })
            .concat(filter.call(list, function (item) { return !contains.call(seen, item); }));
        push.apply(seen, toArray(list));
    });
    return result;
};