Он возвращает неопределенное значение, потому что вы никогда не возвращаетесь к своей внешней функции:
function driversWithRevenueOver(driver, revenue) {...}
Пока вы выполняете return
внутри этой функции, вы возвращаетесь к функции внутреннего обратного вызова, помещенной в .filter(<em>callback</em>)
:
driver.filter(function(person) { <----
if (person.revenue >= revenue) { | returns to callback (not driversWithRevenueOver)
return person; ------------------|
}
});
Таким образом, ваш driversWithRevenueOver
неявно возвращает undefined
(поскольку вы не вызываете, возвращая что-либо внутри него). Итак, вам нужно вернуть результат .filter()
. Кроме того, вам также необходимо исправить ваше заявление return
. Метод filter сохранит элементы в исходном массиве driver
, если вы вернете true
, и удалите его, если вы вернете false
изнутри внутреннего обратного вызова. Таким образом, вы можете просто вернуть оценку person.revenue >= revenue
:
function driversWithRevenueOver(driver, revenue) {
return driver.filter(function(person) {
return person.revenue >= revenue;
});
}
function driversWithRevenueOver(driver, revenue) {
return driver.filter(function(person) {
return person.revenue >= revenue;
});
}
const res = driversWithRevenueOver(
[{
name: "Sally",
revenue: 400
},
{
name: "Annette",
revenue: 200
},
{
name: "Jim",
revenue: 150
},
{
name: "Sally",
revenue: 200
}
],
250
);
console.log(res);