如何将 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.json
是 Express
的一部分,您可以使用它来设置服务器)
您似乎想检查 item
是否在 username
中,
如果username
是一个数组(根据你之前的问题看来是数组)
match = !!username.filter( s => item.indexOf(s) != -1 ).length;
或使用some
match = username.some( s => item.indexOf(s) != -1 );
备注
我正在使用 indexOf,因为从您的 看来您也想将 owner123
与 owner
匹配。
您似乎在寻找用户名的匹配项或子匹配项。鉴于提供的错误消息,子匹配似乎没有意义,所以我假设实际上需要精确匹配。
如果您确实需要子匹配,请在 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');
}
在我之前的问题中,好心人给了我一个检查用户名的好答案。
此代码检查 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.json
是 Express
的一部分,您可以使用它来设置服务器)
您似乎想检查 item
是否在 username
中,
如果username
是一个数组(根据你之前的问题看来是数组)
match = !!username.filter( s => item.indexOf(s) != -1 ).length;
或使用some
match = username.some( s => item.indexOf(s) != -1 );
备注
我正在使用 indexOf,因为从您的 owner123
与 owner
匹配。
您似乎在寻找用户名的匹配项或子匹配项。鉴于提供的错误消息,子匹配似乎没有意义,所以我假设实际上需要精确匹配。
如果您确实需要子匹配,请在 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');
}