Let's say we have the following js array
var ar = [
[2,6,89,45],
[3,566,23,79],
[434,677,9,23]
];
var val = [3,566,23,79];
Is there a js builtin function or jQuery one with which you can search the array ar for val?
Thanks
***UPDATE*************
Taking fusion's response I created this prototype
Array.prototype.containsArray = function(val) {
var hash = {};
for(var i=0; i<this.length; i++) {
hash[this[i]] = i;
}
return hash.hasOwnProperty(val);
}
I consider this more useful for than
containsArray()
. It solves the same problem but returns the index rather than just a boolean value oftrue
orfalse
.The problem with this is that of object/array equality in Javascript. Essentially, the problem is that two arrays are not equal, even if they have the same values. You need to loop through the array and compare the members to your search key (
val
), but you'll need a way of accurately comparing arrays.The easiest way round this is to use a library that allows array/object comparison. underscore.js has a very attractive method to do this:
If you don't want to use another library (though I would urge you to -- or at least borrow the message from the Underscore source), you could do this with
JSON.stringify
...This will almost certainly be significantly slower, however.
Use this instead
You can use
Array.prototype.some()
,Array.prototype.every()
to check each element of each array.Why don't you use javascript array functions?
Or if your array is more complicated, and you want compare only one property but as result return whole object:
More about used functions: filter() and some()
Can you try this?