首页 > 解决方案 > 如何为相同的参数只执行一次函数

问题描述

我的函数调用如下:

await insertingMatchIdsInAllTeamPlayers(fieldersA, matchID)

假设使用 matchID '1' 调用该函数,它应该被执行,但是如果使用 matchId '1' 再次调用该函数(在我的情况下是这样),它不应该被执行。但是,如果使用 id '2'(基本上是 id !== '1')调用它,它应该被执行。我不在乎守场员的争论。

标签: javascriptnode.jsfunction

解决方案


您可以在函数外部跟踪数组中所有传递的参数。当您调用该函数时,它将检查提供的参数是否在数组中。如果不是,请调用该函数并将参数插入到数组中。如果参数已经在数组中,则不要调用该函数。

const suppliedMatchIDs = [];

function insertingMatchIdsInAllTeamPlayers(fieldersA, matchID) {
    if (suppliedMatchIDs.includes(matchID)) {
      return;
    } else {
      suppliedMatchIDs.push(matchID);
    }

    // Your function here
}

缓存参数以加快函数调用的一般概念称为memoization


推荐阅读