可以通过将自定义函数传递给filter
方法来过滤Javascript中的数组:
const bigArray = [1, 2, 3, 4, 5, 6, 7, 8, 9];
const filteredArray = bigArray.filter(item => item < 5);
也可以将函数作为“引用”传递:
function largerThanFive(item) {
return item => item < 5;
}
const bigArray = [1, 2, 3, 4, 5, 6, 7, 8, 9];
const filteredArray = bigArray.filter(largerThanFive);
我试图通过以下方法使用它与两个数组相交:
const bigArray = [1, 2, 3, 4, 5, 6, 7, 8, 9];
const smallArray = [0, 1, 2];
const filteredArray = bigArray.filter(smallArray.includes);
但是我得到了错误:TypeError: Cannot convert undefined or null to object
我不明白为什么。有人可以详细说明吗?
通过使用原型函数,您失去了对该对象的引用。在这种情况下,您需要使用Function#bind
,
Function#bind
或使用const bigArray = [1, 2, 3, 4, 5, 6, 7, 8, 9];
const smallArray = [0, 1, 2];
const filteredArray = bigArray.filter(Array.prototype.includes.bind(smallArray));
console.log(filteredArray);
的thisArg
参数。
您可以在过滤器中获取每个项目,然后可以检查Array#filter
是否具有该项目,
const bigArray = [1, 2, 3, 4, 5, 6, 7, 8, 9];
const smallArray = [0, 1, 2];
const filteredArray = bigArray.filter(Array.prototype.includes, smallArray);
console.log(filteredArray);
摘要如下:
smallArray