我编写了一个函数来搜索数组并记录一个数字(x)(如果找到)。下面的代码按预期工作,并记录了 1。
let myArr = [54, 23, 499, 342, 1, 44];
let x = 1;
let searchNumber = (arr) => {
arr.forEach(ele => {
if (ele == x) {
console.log(ele);
}
})
};
searchNumber(myArr);
Run Code Online (Sandbox Code Playgroud)
我现在想返回分配给变量 x 的数字。期望 y 被分配 499 但是当我记录 y 时它返回未定义。我哪里错了?
let myArr = [54, 23, 499, 342, 1, 44];
let x = 499;
let searchNumber = (arr) => {
arr.forEach(ele => {
if (ele == x) {
return ele;
}
})
};
let y = searchNumber(myArr);
Run Code Online (Sandbox Code Playgroud)
return ele里面forEach回调不是return在的searchNumber功能。
forEach为每个数组元素执行一次提供的函数,所以return ele里面的作用就像return里面提供的函数一样forEach。
它不代表returnmain 函数。
在这种情况下,最好使用for循环。
let myArr = [54, 23, 499, 342, 1, 44];
let x = 499;
let searchNumber = (arr) => {
for (let i = 0; i < arr.length; i ++) {
if (arr[i] == x) {
return arr[i];
}
}
};
let y = searchNumber(myArr);
console.log(y);Run Code Online (Sandbox Code Playgroud)
小智 5
如果您查看 return 语句的位置,它实际上位于为每个元素 ( ele => {...})调用的箭头函数内。实际上没有从函数作用域返回任何值searchNumber。
尝试在范围内创建一个变量searchNumber并从以下位置修改它arr.forEach():
let myArr = [54, 23, 499, 342, 1, 44];
let x = 499;
let searchNumber = (arr) => {
let val = null;
arr.forEach(ele => {
if (ele == x) {
val = ele;
}
});
return val;
};
let y = searchNumber(myArr);
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
86 次 |
| 最近记录: |