如何在箭头函数中使用filter()数组的上下文参数



我过滤掉了所有年龄在13到19岁之间的人。它与普通回调函数一起工作:

let peoples = [
{name: "Mohan",age: 65},
{name: "Raj",age: 15},
{name: "Sam",age: 13},
{name: "Tamil",age: 3},
{name: "selva",age: 25},
{name: "siva",age: 16},
{name: "Ram",age: 18},
]
let range = {
lower: 13,
upper : 16
}
let teenagers = peoples.filter(function(people){
return ( people.age >= this.lower && people.age <= this.upper);
},range);
console.log(teenagers);

但是,箭头函数给出了一个空数组:

let peoples = [
{name: "Mohan",age: 65},
{name: "Raj",age: 15},
{name: "Sam",age: 13},
{name: "Tamil",age: 3},
{name: "selva",age: 25},
{name: "siva",age: 16},
{name: "Ram",age: 18},
]
let range = {
lower: 13,
upper : 16
}
let teenagers = peoples.filter((people) =>{
return (
people.age >= this.lower && 
people.age <= this.upper
);
},range);
console.log(teenagers);

如何使用this访问上下文对象?

这是因为lambda函数(箭头)获得定义它们的位置的上下文,在本例中是Window,没有lowerupperprops。只要使用range.upperrange.lower而不是this,应该可以正常工作。

最新更新