Home > Back-end >  How to extract a specific substring (based on regex) from an array of strings
How to extract a specific substring (based on regex) from an array of strings

Time:05-26

I have a big array of strings:

['{{Wanted Value}}', 'true', '{{Wanted Value}}', '{{Wanted Value}} unwanted {{Wanted Value}}', 'false'...]

I want to filter the array and extract every {{Wanted Value}} substring to a new array. If the item in the array contains 2 or more of these substrings, I want to have each of them as a separate item. So the result of the above array would be:

['{{Wanted Value}}', {{Wanted Value}}', {{Wanted Value}}', {{Wanted Value}}']

I wrote the regex I want to use but not sure how to write the filter function correctly:

match(/\{\{(. ?)\}\}/)[0]

Thank you

CodePudding user response:

You can try this approach

  • flatMap is to collect all matched strings
  • filter is to get rid of empty results

const data =['{{Wanted Value}}', 'true', '{{Wanted Value}}', '{{Wanted Value}} unwanted {{Wanted Value}}', 'false']

const result = data.flatMap(stringData => stringData.match(/\{\{(. ?)\}\}/g)).filter(stringData => stringData);

console.log(result)

CodePudding user response:

Here is a code which use reduce and string match function to filter the result

let r = ['{{Wanted Value}}', 'true', '{{Wanted Value}}', '{{Wanted Value}}', 'unwanted','{{Wanted Value}}', 'false'];

const result = r.reduce((accumulator, current) => {
  return current.match(/\{\{(. ?)\}\}/)? accumulator.concat(current): accumulator;
}, []);

console.log(result);

  • Related