I have nested arrays those the user made. I want a JavaScript code to access for example "g" element in it
var nestedArrays = [
[a,b,c,d],
[e,f,[
g,h
]]
];
in this example i can access "g" element using this code
var element = nestedarrays[2][1][1];
BUT if "g" is nested in 100 of arrays i have to write a lot of square brackets as it
var g = nestedArrays[2][3][1][?][?].....[?];
OR i don't know how much "g" is nested
IS there an easy code to get any element in the nested arrays with pure javascript or jquery ???
In your first Example to access 'g' You need to access:
[1]) which is ['e','f',['g','h']][2]) which is ['g','h'][0]) and you get 'g'.var nestedArrays = [['a','b','c','d'],['e','f',['g','h']]];
let x = nestedArrays[1][2][0];
console.log(x); // g
So from that we can say that to access 'g'
We need to follow this road of indices [1,2,0]
var nestedArrays = [['a','b','c','d'],['e','f',['g','h']]];
let roadToG = [1,2,0];
for(let i = 0; i < roadToG.length; i++){
nestedArrays = nestedArrays[roadToG[i]];
}
console.log(nestedArrays); // g
BUT if "g" is nested in 100 of arrays i have to write a lot of square brackets as it
var g = nestedArrays[2][3][1][?][?].....[?];
In case we want to access 'g' dynamically without hard code the road of indices; We must loop recursively in array till we find 'g', in looping we keep track of road
function loopRecursively( arr, x ,roadToX = []){
if(JSON.stringify(arr).indexOf(x) == -1) return null; //in edge case where there is no x in array; we just return null!
for ( let i = 0; i < arr.length; i++ ) {
if( arr[i] == x ){
roadToX.push(i);
} else if( Array.isArray( arr[i] ) && JSON.stringify(arr[i]).indexOf(x) != -1 ){
roadToX.push(i);
loopRecursively( arr[i] , x, roadToX);
}
}
return roadToX;
}
let nestedArrays = [['a','b','c','d'],['e','f',['g','h']]];
console.log( loopRecursively( nestedArrays, 'g' ) ); // [1, 2, 0]