我下面写的函数是下划线的交集,从头重写。现在,这只适用于两个数组。我怎样才能让它按原样工作,但有任意数量的参数?
_.intersection = function() {
var argumentsArray = Array.prototype.slice.call(arguments);
return _.filter(argumentsArray[0], function(val) {
return _.indexOf(argumentsArray[1], val) != -1
});
};
最佳答案
您可以像下面这样对参数数组执行归约操作:
_.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
});
});
};
查看演示 here .
关于javascript - 重写下划线交集——理解参数数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31684722/