如何从函数内部的 .forEach 内部完全退出

Posted

技术标签:

【中文标题】如何从函数内部的 .forEach 内部完全退出【英文标题】:How can I completely exit from inside a .forEach that is inside a function 【发布时间】:2016-10-12 08:04:11 【问题描述】:

我有这个方法:

    wordFormDirty = (): boolean => 
    var self = this;
    angular.forEach(self.word.wordForms, function (wf, key) 
        var wordFormNgForm = 'wordFormNgForm_' + wf.wordFormId
        if (!self[wordFormNgForm].$pristine) 
            return true;
        
    );
    return false;
;

据我所知,这永远不会返回 true。有人可以给我一些建议,告诉我如何实现这一点,这样一个非原始的表单就会使 wordFormDirty() 方法返回 true。

【问题讨论】:

内部函数返回true,我猜你希望外部函数返回true?只需使用普通的for 循环即可。 试试some看看。 ***.com/questions/13843972/angular-js-break-foreach 顺便说一句,这是 TypeScript? 【参考方案1】:

如果您希望直接通过Array 获得结果,请考虑使用forEach 以外的其他方法。例如:

return Object.values(this.word.wordForms).some(
  ( wordFormId ) => !this[`wordFormNgForm_$wordFormId`].$pristine
);

【讨论】:

我非常喜欢这个想法,但您能解释一下您的示例中 Object.values 的含义以及如何在我的方法中使用它吗? 我在 ES7 中编写了我的代码示例。如果您的环境不支持某些功能,您可以填充它们或找到替代方案,例如使用来自 Lodash 的 _.some。或者如果wordForms已经是Array,你可以直接使用.some【参考方案2】:

你能试试这个吗,在这种情况下,如果我不明白这个问题,第一次有一个值 true 时结果设置为 true 否则它仍然是 false

wordFormDirty = (): boolean => 
    var self = this;
    var result = false;
    angular.forEach(self.word.wordForms, function (wf, key) 
        var wordFormNgForm = 'wordFormNgForm_' + wf.wordFormId
        if (!self[wordFormNgForm].$pristine) 
            result = true;
        

    );
    return result;
;

【讨论】:

以上是关于如何从函数内部的 .forEach 内部完全退出的主要内容,如果未能解决你的问题,请参考以下文章

如何正确停止线程

java如何从java内部捕获退出代码?

如何从 C++ 程序内部测量内存使用情况?

在使用高达 SSSE3 的内部函数后如何从我的 16 字节寄存器中存储 4 字节

从 foreach 内部调用 Pyspark 保存不起作用

为啥我不能从内部调用一个类的 start 函数?