Reputation: 774
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
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
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