Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/473.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript JS Set.has()在存在项时返回假布尔值_Javascript_Set - Fatal编程技术网

Javascript JS Set.has()在存在项时返回假布尔值

Javascript JS Set.has()在存在项时返回假布尔值,javascript,set,Javascript,Set,我已经编写了一个递归函数,它有一个基本情况,但它没有终止,因为if语句读取集合中的值。timestamps.has始终返回false,即使它应该返回true 我无法追踪这个bug,我想知道我是否做了一些简单的错误,比如timestamps变量的作用域,我已经检查了集合中的值和比较的值,它们实际上是等效的,所以我不确定哪里出了错 var timestamps; trackFraud = async () => { account = document.getElementById("

我已经编写了一个递归函数,它有一个基本情况,但它没有终止,因为if语句读取集合中的值。timestamps.has始终返回false,即使它应该返回true

我无法追踪这个bug,我想知道我是否做了一些简单的错误,比如timestamps变量的作用域,我已经检查了集合中的值和比较的值,它们实际上是等效的,所以我不确定哪里出了错

var timestamps;

trackFraud = async () => {

  account = document.getElementById("account").value;

  timestamps = new Set();

  await fraudClimb(account, 0);

  async function fraudClimb(account, theseTimestamps) {

    var [frauds, theseTimestamps] = await findFraudByFromAccount.call(this, account, theseTimestamps);

    if (frauds.length == 0) return;

    for (var i = 0; i < frauds.length; i++) {
      await fraudClimb(frauds[i], theseTimestamps[i]);
    }
  }
}

findFraudByFromAccount = async (account, timestamp) => {
  events = await window.KYCinstance.getPastEvents('ReportedFraudB', { filter: {fromAccount: web3.utils.fromAscii(account)}, fromBlock: 0 });
  var frauds = [];
  var theseTimestamps = [];

  for (let i = 0; i < events.length; i++) {
    let values = events[i].returnValues;

    if (timestamps.has(values.times)) continue;  //THIS LINE IS NEVER FAILING
    else {
      timestamps.add(values.time);
      theseTimestamps.push(values.time);
      frauds.push(web3.utils.toAscii(values.fromAccount)); 
    }
  }
  return [frauds, theseTimestamps];
}

这里似乎有一个不匹配:

                                extra 's'
                               /
if (timestamps.has(values.times)) continue;
else {
  timestamps.add(values.time);
                            \
                             no 's' here
  ...
根据您的值对象结构,这可能是至关重要的。如果这些属性不相等或其中一个不存在,has检查将返回false。

什么是values.times和values.time?