forEach возвращает неопределенное - PullRequest
0 голосов
/ 19 января 2020

Я хочу, чтобы мой foreach () l oop просматривал массив карт и проверял, совпадает ли значение типа. Если нет, вернуть оператор else.

Функция

function checkCars(carData) {
        const cars = carData.models;

        models.forEach(model => {
            if (model.type === 'Toyota' || model.type === 'Hyundai') {
                return "Type A";
            } else {
                return "Type B";
            }
        });
    }

База данных

"models": [
  {type: "Toyota"}
  {type: "Hyundai"}
  {type: "Audi"}
  {type: "VW"}
]

Ответы [ 4 ]

4 голосов
/ 19 января 2020

Возвращаемое значение Array.prototype.forEach () равно undefined, вы не можете ничего явно вернуть из forEach().

Вы можете попробовать с Array .prototype.map () вместо:

Метод map() создает новый массив, заполненный результатами вызова предоставленной функции для каждого элемента в вызывающем массив.

function checkCars(carData) {
  const cars = carData.models;

  return models.map(model => {
    if (model.type === 'Toyota' || model.type === 'Hyundai') {
      return "Type A";
    } else {
      return "Type B";
    }
  });
}
2 голосов
/ 19 января 2020

forEach не имеет возвращаемого значения. Вы должны использовать функцию map для изменения типов элементов.

1 голос
/ 19 января 2020

Если вы хотите преобразовать массив, вы хотите map:

function checkCars(carData) {
  const cars = carData.models;

  return models.map(model => {
    if (model.type === 'Toyota' || model.type === 'Hyundai') {
      return "Type A";
    } else {
      return "Type B";
    }
  });
}
0 голосов
/ 19 января 2020

Вы можете использовать что-то вроде этого:

function checkCars(carData) {
        const cars = carData.models;
        let type = "Type A"
        models.forEach(model => {
            if (model.type !== 'Toyota' && model.type !== 'Hyundai') {
                type = "Type B";
            }
        });
        return type
    }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...