Home > Software design >  How can I find a specific value inside a nested array?
How can I find a specific value inside a nested array?

Time:02-16

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