Javascript 在下划线中重写交集-理解参数数组
我在下面编写的函数是下划线的交集,是从头重新编写的。目前,这只适用于两个阵列。我如何才能让它按原样工作,但要有任意数量的参数Javascript 在下划线中重写交集-理解参数数组,javascript,functional-programming,underscore.js,Javascript,Functional Programming,Underscore.js,我在下面编写的函数是下划线的交集,是从头重新编写的。目前,这只适用于两个阵列。我如何才能让它按原样工作,但要有任意数量的参数 _.intersection = function() { var argumentsArray = Array.prototype.slice.call(arguments); return _.filter(argumentsArray[0], function(val) { re
_.intersection = function() {
var argumentsArray = Array.prototype.slice.call(arguments);
return _.filter(argumentsArray[0], function(val) {
return _.indexOf(argumentsArray[1], val) != -1
});
};
可以对参数数组执行reduce操作,如下所示:
_.intersection = function() {
var argumentsArray = Array.prototype.slice.call(arguments);
return _.reduce(argumentsArray, function (intersectedArray, currentArray) {
return _.filter(intersectedArray, function(val) {
return _.indexOf(currentArray, val) !== -1
});
});
};
查看演示。这不是我的工作
var alpha = [1, 2, 3, 4, 5, 6],
beta = [4, 5, 6, 7, 8, 9];
$.arrayIntersect = function(a, b)
{
return $.grep(a, function(i)
{
return $.inArray(i, b) > -1;
});
};
window.console && console.log( $.arrayIntersect(alpha, beta) );
function unionArray(...arr){
let union = new Set(arr);
return union;
}
function Intersection(a,b){
var a = new Set(a);
var b = new Set(b);
let union = new Set( [...a].filter(x => b.has(x)));
return union;
}
function Difference(a,b) {
var a = new Set(a);
var b = new Set(b);
let union = new Set( [...a].filter(x => !b.has(x)));
return union;
}