javascript - 当项目存在时,JS Set.has() 返回 false bool 值

标签 javascript set

我编写了一个具有基本情况的递归函数,但由于 if 语句读取集合中的值,因此它不会终止。 timestamps.has() 始终返回 false,即使它“应该”返回 true

我无法追踪该错误,并且想知道我是否做错了一些简单的错误,例如 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
  ...

根据您的 values 对象结构,这可能至关重要。如果这些属性不相等或其中之一不存在,您的 has 检查将返回 false

关于javascript - 当项目存在时,JS Set.has() 返回 false bool 值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55362331/

相关文章:

java - 有没有一种方法可以按照传递的顺序从集合中恢复对象?

javascript - JavaScript 将长数字转换为缩写字符串,有特殊的短小要求

javascript - 添加月份到 javascript 的 setMonth 显示 0

javascript - 如何在 jQuery 中下载文件(已经使用 href 和 PreventDefault)?

Python,mysql.connector 错误 : No Result Set to Fetch From; cgitb shows correct value being passed to function

java - 为什么 java.util.Set 不能从 java.lang.Iterable 分配?

javascript - 如何使用 AJAX - JSON 在 JSP 中保持数据更新?

javascript - 为什么 GWT 和 Script# 风格的框架没有成为主流?

python - Python set([]) 如何检查两个对象是否相等?一个对象需要定义哪些方法来自定义它?

java - 什么是具有独特元素(如集合)和获取元素功能的正确Java集合