Home > Mobile >  Function take in array of string return only strings with that have number(s) in them. Or return emp
Function take in array of string return only strings with that have number(s) in them. Or return emp

Time:04-14

The function has 1 parameter: an array. It should iterate through the array and return strings that contain a number in them. If none of them have an number it will return an empty array.

The code I have written so far seems too verbose. Sometimes it does not return the correct value. I am looking for any ways to shorten the code or improve it.

function numInStr(arr) {
    var stringsWithNum = [];
  for(var x = 0; x < arr.length - 1; x  ) {
    for (var y = 0; y < arr[x].length - 1;y  ) {
      //console.log(typeof arr[x][y]);
            if('0123456789'.indexOf(arr[x][y]) !== -1) {        
                stringsWithNum.push(arr[x]);
        break;              
      }
    }
  }
  return stringsWithNum;
}

CodePudding user response:

You can shorten your code considerably by using .filter() to filter out the elements containing numbers, and using .match() to test whether the elements contain a number.

This eliminates the need to create and maintain (and possibly incorrectly set) array indexes.

function numInStr(arr) {
    return arr.filter(function (elmt) {
        return elmt.match(/\d/)
    })
}

console.log(numInStr(['foo', 'ab12', '34asdf', 'bar']))
// Array [ "ab12", "34asdf" ]
  • Related