Javascript forEach正在返回未定义

Javascript forEach正在返回未定义,javascript,loops,Javascript,Loops,我希望我的foreach()遍历一组映射,并检查类型值是否匹配。如果不返回else语句 功能 function checkCars(carData) { const cars = carData.models; models.forEach(model => { if (model.type === 'Toyota' || model.type === 'Hyundai') { return "Typ

我希望我的foreach()遍历一组映射,并检查类型值是否匹配。如果不返回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"}
]
的返回值是未定义的,您不能从
forEach()
显式返回任何内容

您可以尝试使用以下选项:

该方法创建一个新数组,其中填充了对调用数组中的每个元素调用所提供函数的结果


如果要变换阵列,则需要:


forEach没有返回值。您应该使用函数来更改元素的类型。

您可以使用如下内容:

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
    }

您正在迭代模型而不是cars。请使用另一个变量来保存类型并为每个in函数返回该类型。最好提供您的预期输出。这是否回答了您的问题?那么,你必须更具体地说明问题所在。你想要什么输出?当第一个
为真时中断循环如何?@aszet,你甚至不能阻止循环,它们必须对数组中的所有元素执行。要中断循环,必须使用“简单for循环”。@aszet如果需要,请使用
.some()
,如果需要,请使用
.every()
。有关示例,请参见。
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";
    }
  });
}
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
    }