Javascript forEach正在返回未定义
我希望我的foreach()遍历一组映射,并检查类型值是否匹配。如果不返回else语句 功能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
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
}