函数内的 JavaScript 中断/返回函数

标签 javascript

我一直对处理这个问题的最佳方法感到困惑。我过去一直使用的方法有效,但似乎必须有更好的方法。

下面我有一段代码,我想为函数 getData 返回 item。问题在于下面的示例中,它返回的是 forEach 函数,而不是 getData 函数。

function getData() {
    var array = ["element1","element2"];
    array.forEach(function (item) {
        if (item == "element2") {
            return item;
        }
    }); 
}

我一直在做类似的事情来克服这个问题。

function getData() {
    var array = ["element1","element2"];
    var returnValue;
    array.forEach(function (item) {
        if (item == "element2") {
            returnValue = item;
        }
    });
    if (returnValue) {
        return returnValue;
    }
}

有没有更好的方法来处理这个问题?看起来这些额外的 4 行代码只会在我的代码中造成困惑和困惑。

最佳答案

您可以使用Array#some

The some() method tests whether some element in the array passes the test implemented by the provided function.

function getData() {
    var array = ["element1","element2"];
    var returnValue;
    array.some(function (item) {
        if (item == "element2") {
            returnValue = item;
            return true;
        }
    });
    return returnValue;
}

或者,如果您使用 ES6,请使用 Array#find

The find() method returns a value in the array, if an element in the array satisfies the provided testing function. Otherwise undefined is returned.

function getData() {
    var array = ["element1","element2"];
    return array.find(item => item == "element2");
}

关于函数内的 JavaScript 中断/返回函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39069022/

相关文章:

javascript - 在通过 child.print() 打印之前,如何等待图像加载到新窗口中?

javascript - 如何应用 var height = $(window).height() - 20; .followTo() 函数

javascript - 检查使用 JavaScript 上传的文件数的长度

javascript - 如何在 React TypeScript 中输出过滤后的待办事项列表

javascript - 使用underscore.js在另一个对象中查找一个对象

javascript - Azure cosmos DB 仅在查询中允许最多 5 个联接

javascript - 表单提交不适用于 WordPress 管理中的下拉更改

javascript - 将值从 javascript 传递到 servlet 在 Chrome 中不起作用

javascript - 使用提交限制验证密码时出错

javascript - 根据ui-grid的每行id将JSON数据导出到AngularJs中的CSV文件