Проблема в том, что вы возвращаетесь из функции обратного вызова, а не из содержащей ее функции.
Вы должны установить переменную в обратном вызове forEach()
, а затем вернуть ее вне цикла.
var checkedOption;
cars.forEach(car => {
if (car.checked) {
checkedOption = carOptions[car.id];
}
});
return checkedOption;
Обратите внимание, что это не так эффективно, как цикл for
. Цикл остановится и вернется из функции, как только найдет совпадение. Но нет способа остановить forEach()
в середине, он продолжит тестировать оставшиеся машины. И если есть несколько проверенных автомобилей, checkedOption
будет установлен на параметры, соответствующие последнему, а не первому.
Вместо этого вы можете использовать .find()
:
var checkedCar = cars.find(car => car.checked);
if (checkedCar) {
return carOptions[checkedCar.id];
}