javascriptarraysnumbersmixed

Extract Numbers from Array mixed with strings - Javascript


I have an array from strings and numbers. I need to sort the numbers or better to extract only the numbers in another array. Here is the example:

 const myArr = ['Prihodi 23456 danaci 34 razhodi 23455 I drugi.']

I need to make it like this

 const filtered = [23456, 34, 23455]

I used split(' ') method to separate them with comma but don't know how to filter them for JS they all are strings.


Solution

  • This could be a possible solution,

    See MDN for map(), replace(), trim() and split()

    const myArr = ['Prihodi 23456 danaci 34 razhodi 23455 I drugi.'];
    filtered = myArr[0].replace(/\D+/g, ' ').trim().split(' ').map(e => parseInt(e));
    console.log(filtered);

    OR

    const regex = /\d+/gm;
    const str = `Prihodi 23456 danaci 34 razhodi 23455 I drugi`;
    let m;
    const filter = [];
    while ((m = regex.exec(str)) !== null) {
      // This is necessary to avoid infinite loops with zero-width matches
      if (m.index === regex.lastIndex) {
        regex.lastIndex++;
      }
    
      // The result can be accessed through the `m`-variable.
      m.forEach((match, groupIndex) => {
        filter.push(parseInt(match))
      });
    }
    
    console.log(filter);