1

I have an array and I need to find if it contains specific value using jQuery

var my_array = [
      {"Order":{"id":"93","company_name":"name1"}},
      {"Order":{"id":"98","company_name":"name2"}},
      {"Order":{"id":"30","company_name":"name3"}},
      {"Order":{"id":"3","company_name":"name4"}},
      {"Order":{"id":"13","company_name":"name5"}}
]

I want to know if this array has id:3. I tried this:

if(jQuery.inArray(id, my_array) !== -1) {
   console.log("is in array");
 } else {
   console.log("is NOT in array");
 } 

Any suggestions?

Vova
  • 750
  • 11
  • 26

2 Answers2

2

You can easily do this by filtering the array. Filter by the inner object's ID and check the length of the returned array. If it's 1 or greater, it contains the object you're searching for.

var my_array = [
      {"Order":{"id":"93","company_name":"name1"}},
      {"Order":{"id":"98","company_name":"name2"}},
      {"Order":{"id":"30","company_name":"name3"}},
      {"Order":{"id":"3","company_name":"name4"}},
      {"Order":{"id":"13","company_name":"name5"}}
];

var valueToCheck = 3;
console.log(my_array.filter(x => {return x.Order.id == valueToCheck;}).length > 0);

Here it is as a function:

var my_array = [
      {"Order":{"id":"93","company_name":"name1"}},
      {"Order":{"id":"98","company_name":"name2"}},
      {"Order":{"id":"30","company_name":"name3"}},
      {"Order":{"id":"3","company_name":"name4"}},
      {"Order":{"id":"13","company_name":"name5"}}
];


function checkArray(array, value)
{
  return array.filter(x => {return x.Order.id == value;}).length > 0;
}

console.log(checkArray(my_array, 3));
console.log(checkArray(my_array, 4));
Liftoff
  • 24,717
  • 13
  • 66
  • 119
2

If you want to check whether it contains your desired value without iterating the whole array, then use pure JavaScript some method.

As mdn says:

The some() method tests whether at least one element in the array passes the test implemented by the provided function. It returns a Boolean value.

An example:

let my_array = [
      {"Order":{"id":"93","company_name":"name1"}},
      {"Order":{"id":"98","company_name":"name2"}},
      {"Order":{"id":"30","company_name":"name3"}},
      {"Order":{"id":"3","company_name":"name4"}},
      {"Order":{"id":"13","company_name":"name5"}}
]

let found = my_array.some(f => f.Order.id == 3);
console.log(`contains`, found)

In addition, it is possible to use pure JavaScript method called find method, however, be careful it returns the first item found by your condition, not all items. If you want to find all items, then use filter method with the same condition:

let my_array = [
      {"Order":{"id":"93","company_name":"name1"}},
      {"Order":{"id":"98","company_name":"name2"}},
      {"Order":{"id":"30","company_name":"name3"}},
      {"Order":{"id":"3","company_name":"name4"}},
      {"Order":{"id":"13","company_name":"name5"}}
]

let found = my_array.find(f => f.Order.id == 3);
console.log(found)
StepUp
  • 36,391
  • 15
  • 88
  • 148