20 lines
		
	
	
		
			588 B
		
	
	
	
		
			JavaScript
		
	
	
	
	
	
			
		
		
	
	
			20 lines
		
	
	
		
			588 B
		
	
	
	
		
			JavaScript
		
	
	
	
	
	
"use strict";
 | 
						|
 | 
						|
var value    = require("../../object/valid-value")
 | 
						|
  , contains = require("./contains")
 | 
						|
  , byLength = require("./_compare-by-length")
 | 
						|
  , filter   = Array.prototype.filter
 | 
						|
  , push     = Array.prototype.push
 | 
						|
  , slice    = Array.prototype.slice;
 | 
						|
 | 
						|
module.exports = function (/* …list*/) {
 | 
						|
	var lists;
 | 
						|
	if (!arguments.length) slice.call(this);
 | 
						|
	push.apply((lists = [this]), arguments);
 | 
						|
	lists.forEach(value);
 | 
						|
	lists.sort(byLength);
 | 
						|
	return lists.reduce(function (list1, list2) {
 | 
						|
		return filter.call(list1, function (item) { return contains.call(list2, item); });
 | 
						|
	});
 | 
						|
};
 |