-4

enter image description here

This is a terrible situation.

I want to check whether a number is in given array of numbers. But it returns mysterious result.

Here is my captured console image.

I also check the type of a number and elements in array. Blue one has number type elements, and red one has string type elements. As for a single number, blue number is number type and black number is string type. But the type does not affect anything to the result.

After checking all results, I figured out numbers above 10, double digits, make problems. 1~10 numbers do not make strange situation.

What is the problem? How can I fix this?


Here is my code. This is a part of long code, so I adjust this a little bit to understand seperately.

object = {'2': obj,'3': obj,'10': obj,'11': obj,...}

var array = Object.keys(object);
var newArray = array.map(function(x) {
   return parseInt(x, 10)
});
var newNumber = parseInt(number, 10) // number is from above code, just a number.

console.log(newArray);
console.log(newNumber);
console.log(newNumber in newArray);

console.log(array);
console.log(number.toString());
console.log(number.toString() in array);
    `
Luis Kang
  • 251
  • 1
  • 4
  • 15

2 Answers2

0

You can try Array.indexOf

var array = [2,3,10,11,12,13,14,18,20,21,25];
var myObject = {'2': obj,'3': obj,'10': obj,'11': obj}

for (let key in myObject){
    if (array.indexOf(parseInt(key)) == -1){ //If the value is not found
        //Element not found
    }
    else{
        //Element found 
    }
}

More info about Array.indexOf can be found here.

Thum Choon Tat
  • 3,084
  • 1
  • 22
  • 24
0

To check whether element exists in the array (true/false), you need to check either newArray.indexOf(newNumber) !== -1 or newArray.indexOf(newNumber) > -1 as below.

Also, in your above code of array.map(function(x) { return parseInt(x, 10) }, you didn't close the bracket opened by array.map(

Working code:

var obj = {};
var object = {'2': obj, '3': obj, '10': obj, '11': obj};

var array = Object.keys(object)
var newArray = array.map(function(x) {
   return parseInt(x, 10)
});
   
var number = 10;
var newNumber = parseInt(number, 10); // number is from above code, just a number.

console.log(newArray);
console.log(newNumber);
console.log(newArray.indexOf(newNumber));
console.log(newArray.indexOf(newNumber) !== -1); // To get true or false you need either this or the below one
console.log(newArray.indexOf(newNumber) > -1);
Aruna
  • 11,959
  • 3
  • 28
  • 42