var result = arrays.shift().filter(function(v) { return arrays.every(function(a) { return a.indexOf(v) !== -1; }); });
您可以首先对外部Array进行排序,以在开始时获得最短的Array …
arrays.sort(function(a, b) {
return a.length - b.length;
});
为了完整起见,这是一个解决数组中重复项的解决方案。它使用.reduce()
代替.filter()
…
var result = arrays.shift().reduce(function(res, v) {
if (res.indexOf(v) === -1 && arrays.every(function(a) {
return a.indexOf(v) !== -1;
})) res.push(v);
return res;
}, []);