Skip to content
Advertisement

Using maps over template literals

so I need to print a boolean value if the given string contains [[placeholder:var3]] but the var3 will be dynamically fed from an array as 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; } }); })

I tried using map around the template literals but it is throwing me an error also tried like above eg but it checks only first value of the array, so can someone please help me solve this, I’d appreciate any help, thanks in advance.

updating the question with the actual PS. organizationLocales is an array and alertDetails is an object that has an variables array, Delmethod is an array is being used to check the different properties dynamically

Advertisement

Answer

[[placeholder:${variabless}]] yields [[placeholder:var1,var2,var3]]. It doesn’t check the first variable. And that’s not how Array.string.includes is supposed to be used. For checking exact match use the === operator.

In case you want to check if any of the array elements match the string you can use the Array.prototype.some method which returns a boolean value.

let any = variabless.some(el => s === `[[placeholder:${el}]]`)

If you want to find the element that matches with the string use the Array.prototype.find function.

User contributions licensed under: CC BY-SA
10 People found this is helpful
Advertisement