Champion
Champion

Reputation: 774

How to find if specific key with value exist in array jQuery?

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?

Upvotes: 1

Views: 791

Answers (2)

StepUp
StepUp

Reputation: 38114

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)

Upvotes: 2

Liftoff
Liftoff

Reputation: 25392

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));

Upvotes: 2

Related Questions