如何将 Python [... for ... in ... if ...] 转换为 JavaScript

How to convert Python [... for ... in ... if ...] to JavaScript

在我之前的问题中,好心人给了我一个检查用户名的好答案。

此代码检查 username 是否有一些禁用词。

Python:

FORBIDDEN_USERNAME_LIST = ['admin', 'master', 'owner']

for item in forbidden.FORBIDDEN_USERNAME_LIST:
    match = [nm for nm in FORBIDDEN_USERNAME_LIST if nm in username]
    if match:
        return JsonResponse({'result': item + 'banned username'})

我将此代码转换为 JavaScript,但有些代码对我来说太难转换了。

JavaScript:

for (item in FORBIDDEN_USERNAME_LIST){
    match = [nm for nm in FORBIDDEN_USERNAME_LIST if nm in username]
    //Here match = [...] code is hard for me to convert 
    if (match){
        console.log('exist')
    }
}

如何将此代码转换为 JavaScript?

 const forbidden = ['admin', 'master', 'owner'];
 const username ="imanadmin;)";
 const found = forbidden.find(word => username.includes(word));
 if(found) return res.json({'result': found + ' banned username'});

只是 find 用户名中 included 的禁用词。 (res.jsonExpress 的一部分,您可以使用它来设置服务器)

您似乎想检查 item 是否在 username 中,

如果username是一个数组根据你之前的问题看来是数组

match = !!username.filter( s => item.indexOf(s) != -1 ).length;

或使用some

match = username.some( s => item.indexOf(s) != -1 );

备注

我正在使用 indexOf,因为从您的 看来您也想将 owner123owner 匹配。

您似乎在寻找用户名的匹配项或子匹配项。鉴于提供的错误消息,子匹配似乎没有意义,所以我假设实际上需要精确匹配。

如果您确实需要子匹配,请在 username

上使用 .includes() 方法

const username = "master";
const FORBIDDEN_USERNAME_LIST = ['admin', 'master', 'owner'];

const match = FORBIDDEN_USERNAME_LIST.some(n => n === username);

if (match) {
  console.log(username, 'exists');
}

在 ES5 中使用正则表达式:

var FORBIDDEN_USERNAME_LIST = ['admin', 'master', 'owner'],
    username = "master",
    match = false;

match = FORBIDDEN_USERNAME_LIST.some(function(pattern) {
  return new RegExp(pattern).test(username)
});

if (match) {
  console.log(username, 'exists');
}