【问题标题】:How can I completely exit from inside a .forEach that is inside a function如何从函数内部的 .forEach 内部完全退出
【发布时间】: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。

【问题讨论】:

标签: javascript angularjs


【解决方案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;
};

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2018-10-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-11-11
    • 2011-08-10
    相关资源
    最近更新 更多