我不知道为什么我的findDroids函数不能引用droids果变量。当我运行这个代码时;结果未定义";。如有任何提示/指导,我们将不胜感激。我是Javascript的新手,所以请对我宽容一点:(
function droids(arr) {
let result = '';
arr.forEach(findDroids);
return result;
}
function findDroids(value, index, arr){
if (arr[index] == "Droids"){
result = "Found Droids!";
} else{
result = "These are not the droids you're looking for."
}
}
// Uncomment these to check your work!
const starWars = ["Luke", "Finn", "Rey", "Kylo", "Droids"]
const thrones = ["Jon", "Danny", "Tyrion", "The Mountain", "Cersei"]
console.log(droids(starWars)) // should log: "Found Droids!"
console.log(droids(thrones)) //should log: "These are not the droids you're looking for."
因为在JS中,let
变量的作用域是最接近的函数。在这种情况下,result
仅在droids
级别可用。使变量全局化应该有效:
let result = ''; // Available everywhere
function droids(arr) {
//let result = ''; // Available only at `droids` level
arr.forEach(findDroids);
return result;
}
function findDroids(value, index, arr){
if (arr[index] == "Droids"){
result = "Found Droids!";
} else{
result = "These are not the droids you're looking for."
}
}
// Uncomment these to check your work!
const starWars = ["Luke", "Finn", "Rey", "Kylo", "Droids"]
const thrones = ["Jon", "Danny", "Tyrion", "The Mountain", "Cersei"]
console.log(droids(starWars)) // should log: "Found Droids!"
console.log(droids(thrones)) //should log: "These are not the droids you're looking for."
话虽如此,使用全局变量可能不是最好的选择。您可以在带有haystack.includes(needle)
的haystack
中找到needle
,以便轻松检查数组是否包含您要查找的值:
const arr = ["qqq", "www", "eee"]
console.log(arr.includes("qqq") ? "Found droids" : "Not found")
console.log(arr.includes("zzz") ? "Found droids" : "Not found")
function droids(arr) {
return arr.some(function(a){return a === "Droids";});
}
一些建议。查看其他示例中的"includes",这可能是一个更好的工作工具。