【问题标题】:Executing A function for all elements of an array对数组的所有元素执行一个函数
【发布时间】:2021-07-22 07:56:39
【问题描述】:

大家好,我有一个由以下元素组成的数组

var arr = ['america','france','house','paris','table','new york']

我想从我的数据库中验证是否都是州、国家或首都

这是我检查单个元素的示例代码

let isValid = await db.worldDb.verifyQuery(query);

let verified; ['state','capital','country'].includes(isValid.response)? verified = true : verified = false;

我想将上面的代码传递给数组中的所有元素并创建一个通用函数,因此如果任何测试失败,则该函数将返回 false,但如果全部通过则返回 true。

【问题讨论】:

标签: javascript node.js arrays function loops


【解决方案1】:

Promise.all 正是您所需要的。

var arr = ['america','france','house','paris','table','new york']

try {
    await Promise.all(arr.map(async a => {
        const isValid = await db.worldDb.verifyQuery(query);

        const verified = ['state','capital','country'].includes(isValid.response);

        if(!verified) throw new Error();
    }));
    // here is ok
} catch(e) {
    // here is not verified
}

【讨论】:

    【解决方案2】:

    我认为您可以为此使用 Array.every() 。它的工作原理类似于 foreach 循环,但如果回调函数对数组中的任何元素计算为 false,则 each 函数返回 false。

    https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/every

    【讨论】:

      猜你喜欢
      • 2021-03-19
      • 1970-01-01
      • 2014-02-15
      • 2019-12-27
      • 2020-10-02
      • 2012-07-18
      • 1970-01-01
      • 1970-01-01
      • 2020-04-11
      相关资源
      最近更新 更多