我有下面的代码。我故意在这种情况下尝试使用forEach。
function check(arr, el) {
arr.forEach((element) => {
console.log(element)
if (element === el) {
return true
}
})
}
check([1, 2, 3, 4, 5], 3)
我期望代码返回true,因为el值3在数组中。但是相反,它返回未定义。我究竟做错了什么?
答案 0 :(得分:4)
forEach不要return(表示未定义),可以使用some
function check(arr, el) {
return arr.some( element => element === el)
}
console.log(check([1, 2, 3, 4, 5], 3))
如果要使用forEach
而不是使用变量存储值,而不要稍后从函数返回
function check(arr, el) {
let found = false
arr.forEach((element) => {
if (element === el && !found){
found = true
}
})
return found
}
console.log(check([1, 2, 3, 4, 5], 3))
答案 1 :(得分:1)
不能在return
语句中使用forEach
。
注意:该答案仅 ,因为您需要使用forEach
。
通常,您将始终使用some()
。
function check(arr, el) {
let found = false;
arr.forEach((element) => {
console.log(element)
if (element === el) {
found = true;
}
});
return found;
}
console.log( check([1, 2, 3, 4, 5], 3));
答案 2 :(得分:0)
仅使用OP的上下文。因为必须使用forEach。
function check(arr, el) {
let found = false;
arr.forEach((element) => {
console.log(element)
if (element === el){
found = true;
}
})
return found;
}
答案 3 :(得分:0)
如果要使用ui-sref="library"
,则需要在找到匹配项时更新变量。默认情况下,Array.forEach返回ui-sref-active
。没有forEach
到break out of the forEach的方式。
由于您只是在寻找简单的元素匹配项,因此只需使用undefined
:
build in
Array.some为您提供了迭代器功能,在这种情况下,您实际上不需要。
使用Array.includes
:
let check = (arr, el) => arr.includes(el)
console.log(check([1, 2, 3, 4, 5], 3))