Question: I have this array that have a nested array that I want to loop to find a specific value.
arr = [['123456','234567'], ['345678']];
specificValue = '123456';
The output that I want is to find out if there's a value same with specificvalue and return this value?
I tried
arr.filter(id => id === specificValue);
Thanks for the help
CodePudding user response:
Let's keep going with your attempt.
The problem is your array is nested so array.filter
will not work
Use array.flat
with array.filter
:
let arr = [['123456','234567'], ['345678']];
let specificValue = '123456';
console.log(arr.flat().filter(i=>i==specificValue))
CodePudding user response:
Try this code
const arr = [['123456','234567'], ['345678']];
const result = arr.flat(Infinity).find(val => val === "123456");
console.log(result);
You can learn more about array.flat() method here https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/flat
CodePudding user response:
Since flat() takes a depth as an argument, to be able to search in an indefinite number of nested arrays you could try good old recursion:
const findRecursive = (array, target) => {
for (let i = 0; i < array.length; i ) {
if (array[i] === target) {
return array[i];
} else if (Array.isArray(array[i])) {
return findRecursive(array[i], target);
}
}
}
console.log(findRecursive(arr, specificValue));