JavaScript——为什么NoDE.js数组?原型.For()循环不将值或对象传递到循环中间的函数返回?

z9smfwbn  于 2021-09-23  发布在  Java
关注(0)|答案(2)|浏览(243)

为什么No.js数组?原型.For()循环不将值或对象传递到循环中间的函数返回?

const array1 = ['a', 'b', 'c'];

function loop_n_return(char){
    array1.forEach((element) => {
        console.log(element);
        if(element === char){
            return element;
        }
    });
}

loop_n_return('b'); //output: unidentified

但这是可行的:

const array1 = ['a', 'b', 'c'];

function loop_n_return(char){
    var found_element;
    array1.forEach((element) => {
        console.log(element);
        if(element === char){
            found_element = element;
        }
    });
    return found_element;
}

loop_n_return('b'); //output: b
zpgglvta

zpgglvta1#

这是.find()的作业,而不是 .forEach() .

const foundElement = array1.find( element => {
   console.log(element)
   return element === char // true if match
});
vbopmzt1

vbopmzt12#

在foreach回调中返回值不会更改函数的返回值 loop_n_return .
但是,如果使用for…of循环,可以在找到值后立即返回该值,这也会更有效,因为不会循环数组中的每个值。

const array1 = ['a', 'b', 'c'];

function loop_n_return(arr, char){
    for(let element of arr) {
        if (element === char) {
            return element;
        }
    }
}

console.log(loop_n_return(array1, 'a'));
console.log(loop_n_return(array1, 'b'));
console.log(loop_n_return(array1, 'c'));

相关问题