在模板文字上使用映射
Using maps over template literals
因此,如果给定的字符串包含 [[placeholder:var3]],我需要打印一个布尔值,但是 var3 将从数组中动态输入,如 belwo:
const delmethod = ['all', 'email', 'sms', 'fax', 'voice', 'voicemail', 'pager', 'pagerTwoWay'];
let languages = organizationLocales.map(a => a.locale);
let variabless = alertDetails.variables?.map(k => k.name); languages && languages.length > 0 && languages.map(lang => { delmethod.map(i => {
if ( alertDetails.alertMessage?.[${lang}]?.[i]?.variabless?.some(el => [i] === [[placeholder:${el}]]) )
{ bodyContainsVariables = true; } }); })
我尝试在模板文字周围使用 map 但它抛出一个错误,也像上面那样尝试过,例如,但它只检查数组的第一个值,所以有人可以帮我解决这个问题,我会很感激任何帮助,提前致谢。
用实际 PS 更新问题。 organizationLocales 是一个数组,alertDetails 是一个具有变量数组的对象,Delmethod 是一个数组用于动态检查不同的属性
您需要在模板字面量中指定索引,因为 variabless
是一个像这样的数组:
console.log(s.includes(`[[placeholder:${variabless[2]}]]`));
希望对你有所帮助
您目前正在传递整个数组
s.includes([[placeholder:${variabless}]])
那是行不通的,您需要指定要将变量数组的哪个元素注入字符串,该字符串的元素索引为 2,因此它应该是这样的
s.includes([[placeholder:${variabless[2]}]])
[[placeholder:${variabless}]]
产生 [[placeholder:var1,var2,var3]]
。它不检查第一个变量。这不是应该使用 Array.string.includes
的方式。要检查完全匹配,请使用 ===
运算符。
如果您想检查是否有任何数组元素与字符串匹配,您可以使用 Array.prototype.some
方法,其中 returns 一个布尔值。
let any = variabless.some(el => s === `[[placeholder:${el}]]`)
如果要查找与字符串匹配的元素,请使用 Array.prototype.find
函数。
要匹配 variabless
中的 任何 值,您可以针对正则表达式进行测试:
console.log(new RegExp(
`\[\[placeholder:(${variabless.join('|')})\]\]`
).test(s));
因此,如果给定的字符串包含 [[placeholder:var3]],我需要打印一个布尔值,但是 var3 将从数组中动态输入,如 belwo:
const delmethod = ['all', 'email', 'sms', 'fax', 'voice', 'voicemail', 'pager', 'pagerTwoWay'];
let languages = organizationLocales.map(a => a.locale);
let variabless = alertDetails.variables?.map(k => k.name); languages && languages.length > 0 && languages.map(lang => { delmethod.map(i => {
if ( alertDetails.alertMessage?.[${lang}]?.[i]?.variabless?.some(el => [i] === [[placeholder:${el}]]) )
{ bodyContainsVariables = true; } }); })
我尝试在模板文字周围使用 map 但它抛出一个错误,也像上面那样尝试过,例如,但它只检查数组的第一个值,所以有人可以帮我解决这个问题,我会很感激任何帮助,提前致谢。
用实际 PS 更新问题。 organizationLocales 是一个数组,alertDetails 是一个具有变量数组的对象,Delmethod 是一个数组用于动态检查不同的属性
您需要在模板字面量中指定索引,因为 variabless
是一个像这样的数组:
console.log(s.includes(`[[placeholder:${variabless[2]}]]`));
希望对你有所帮助
您目前正在传递整个数组
s.includes([[placeholder:${variabless}]])
那是行不通的,您需要指定要将变量数组的哪个元素注入字符串,该字符串的元素索引为 2,因此它应该是这样的
s.includes([[placeholder:${variabless[2]}]])
[[placeholder:${variabless}]]
产生 [[placeholder:var1,var2,var3]]
。它不检查第一个变量。这不是应该使用 Array.string.includes
的方式。要检查完全匹配,请使用 ===
运算符。
如果您想检查是否有任何数组元素与字符串匹配,您可以使用 Array.prototype.some
方法,其中 returns 一个布尔值。
let any = variabless.some(el => s === `[[placeholder:${el}]]`)
如果要查找与字符串匹配的元素,请使用 Array.prototype.find
函数。
要匹配 variabless
中的 任何 值,您可以针对正则表达式进行测试:
console.log(new RegExp(
`\[\[placeholder:(${variabless.join('|')})\]\]`
).test(s));