Im having a multdimensional javascript arrays like this.
[
["9", "16", "19", "24", "29", "38"],
["9", "15", "19", "24", "29", "38"],
["10", "16", "19", "24", "29", "38"],
["9", "16", "17", "19", "24", "29", "39"],
["10", "16", "17", "19", "24", "29", "39"],
["9", "15", "21", "24", "29", "38"]
.......
.......
]
Around 40 to be exact
and im having an another array called check with the following values
[9,10] //This is of size two for example,it may contain any number of elements BUT it only contains elements(digits) from the multidimensional array above
What i want is i need to make the multidimensional array unique based for the check array elements
1.Example if check array is [15]
Then multidimensional array would be
[
["9", "15", "19", "24", "29", "38"],
//All the results which contain 15
]
2.Example if check array is [15,21]
Then multidimensional array would be
[
["9", "15", "21", "24", "29", "38"]
//simply containing 15 AND 21.Please note previous example has only 15 in it not 21
//I need an AND not an OR
]
I had tried the JavaScript IndexOf method BUt it is getting me an OR'ed result not AND
Thanks in Advance
Using .filter and .every, you can filter the rows for which every argument is apparent in the row:
var filter = function(args) {
return arr.filter(function(row) {
return args.every(function(arg) {
return ~row.indexOf(String(arg)); // [15] should search for ["15"]
});
});
};
.every effectively does an AND operation here; for OR you could use .some instead. Those array functions are available on newer browsers.
You can use the .filter() method:
var mainArray = [ /* your array here */ ],
check = ["15", "21"],
result;
result = mainArray.filter(function(val) {
for (var i = 0; i < check.length; i++)
if (val.indexOf(check[i]) === -1)
return false;
return true;
});
console.log(result);
Demo: http://jsfiddle.net/nnnnnn/Dq6YR/
Note that .filter() is not supported by IE until version 9, but you can fix that.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With