将 javascript eval 方法更改为另一个解决方案

Changing javascript eval method to another solution

我试图摆脱丑陋的 javscript eval 方法(因为我们都知道它是不安全的)。 我有以下问题。我构建了一个动态搜索字符串。 取决于用户决定搜索的 TLD。

这是我的代码:

 if (tld == 0) {
            var searchString = 'value.tld != ""';
        }
        if (tld == 1) {
            var searchString = 'value.tld == "de"';
        }
        if (tld == 2) {
            var searchString = 'value.tld == "com" || value.tld == "net" || value.tld == "org" || value.tld == "info" || value.tld == "biz"';
        }
        if (tld == 3) {
            var searchString = 'value.tld == "io"';
        }

根据搜索参数 'searchstring',我用 eval 构建了这个例程:

if (eval(searchString)) {
    // Do something special, depends on the tld variable
}

如何在不使用 'eval' 的情况下重建它。前提是,代码的第一部分未被改动。

提前致谢

尼克

怎么样:

let choices = {
  1: ['de'],
  2: ['com', 'net', 'org', 'info', 'biz'],
  3: ['io']
};

function check(tldparam) {
  if (tld === 0) {
     return value.tld !== "";
  } else {
    return tld === tldparam && choices[tldparam].includes(value.tld);
  }
}

我们测试它是这样的:

// Got this value from somewhere
let tld = 2;
let value = {tld: 'net'};

// This is my checking criterion
let tldparam = 2;

if (check(tldparam)) {
    // Do something special, depends on the tld variable
}

它是否符合您的目的?