Blame view

node_modules/es5-ext/array/#/exclusion.js 805 Bytes
aaac7fed   liuqimichale   add
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
26
27
28
29
30
31
  "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;
  };