javascript - 在数组中查找值然后使用 Angular forEach 返回 true

标签 javascript angularjs foreach

我正在学习 JavaScript 和 AngularJS。

这段代码有什么区别?

function isInArrayNgForeach(field, arr) {
    angular.forEach(arr, function(value, key) {
        if(field == value)
            return true;
    });
    return false;
} // This returns always false

function isInArrayJavaScript(field, arr) {
    for(var i = 0; i < arr.length; i++) {
        if(field == arr[i])
            return true;
    }
    return false;
} // This works fine

function isInArray() {
    var testArr = ['stack', 'over', 'flow'];
    console.log(isInArrayNgForeach('stack', testArr)); // return false
    console.log(isInArrayJavaScript('stack', testArr)); // return true
}

我的问题是:为什么 isInArrayNgForeach 总是返回 false?我假设是因为函数内部有一个函数,但我不确定为什么。

最佳答案

第一个选项不同,因为 return true; 从作为参数传递给 forEach 函数的函数返回,而不是从外部函数 isInArrayNgForeach 这就是为什么最后一行 return false; 总是在 forEach 完成时被调用。这使得该函数始终返回 false。

如果您像这样更改代码,tt 将返回预期结果:

function isInArrayNgForeach(field, arr) {
    var result = false;

    angular.forEach(arr, function(value, key) {
        if(field == value)
            result = true;
    });

    return result;
}

关于javascript - 在数组中查找值然后使用 Angular forEach 返回 true,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25061248/

相关文章:

javascript - django 模板循环调用 javascript 函数

javascript - Angular JS,如何将URL参数传递给angularJS中的$resource?

javascript - 在 filter() 方法中返回值而不是对象

php - Foreach 循环和 XML-RPC : It should work but it isn't, 为什么?

javascript - 使用该选项的 id 获取 select2 的选定选项

javascript - 哪些浏览器支持多行字符串?

javascript - 从 JavaScript 或 jQuery 中的多个元素中删除类

javascript - AngularJS ui-router 中的 Bootstrap UI 选项卡

javascript - 用户确认自己不是机器人后如何获取recaptcha客户端验证参数g-recaptcha-response?

java - 通过Java中的for-each循环检测第一次迭代