Home > Software design >  Is there any way to filter a string in an array of integers in JavaScript?
Is there any way to filter a string in an array of integers in JavaScript?

Time:05-19

I have a JavaScript array :

const arr = ['a', 'b', 1, 4, 6, 'John', 9, 91];

I want to only keep the integers and filter out the strings and characters. Is there any way to do it ? I tried with typeof() but it is not working. Thanks in advance.

CodePudding user response:

try this:

arr.filter((elem) => Number.isInteger(elem));

output = [1,4,6,9,91]

CodePudding user response:

You can use Array.prototype.filter and filter out the items which are numbers using the typeof operator.

const 
  arr = ["a", "b", "1", 4, 6, "John", 9, 91],
  nums = arr.filter((a) => typeof a === "number");

console.log(nums);

Another approach

You can also do it coercing the items to a number. The strings which cannot be coerced to a number result in NaN, a falsy value in JS, and hence are filtered out.

const 
  arr = ["a", "b", 1, 4, 6, "John", 9, 91],
  nums = arr.filter(Number);

console.log(nums);

But note strings that can be coerced to numbers like "1", "123" etc will not get filtered out by the second approach.

And more importantly this approach would filter out all zeroes (0, "0") in the array as 0 is a falsy value in JS.

const 
  arr = ["1", "4", "6", 0, "0"],
  nums = arr.filter(Number);

console.log(nums);

Filtering Integers

You can also filter only integers using Number.isInteger

const 
  arr = ["1", 2, -3, 4.5],
  ints = arr.filter(Number.isInteger);

console.log(ints);

But note, this approach would not filter out numbers that can be represented as integers.

The method will also return true for floating point numbers that can be represented as integer. Source

const 
  arr = [1.0, 2.000000000000001, 3.0000000000000001],
  ints = arr.filter(Number.isInteger);

console.log(ints);

CodePudding user response:

   const arr = ['a', 'b', 1, 4, 6, 'John', 9, 91];

const number = arr.filter(item => typeof item === 'number')
console.log(number )

here the correct way

CodePudding user response:

You can also iterate over array values using for loop and check whether the number in condition and push in new array which will result in getting all the number values.

const arr = ['a', 'b', 1, 4, 6, 'John', 9, 91];
newArr=[];
for(let i=0;i<arr.length;i  ){
/* console.log(arr[i]); */
if(Number(arr[i])){
newArr.push(arr[i]);
}
}

console.log(newArr);
  • Related