How to find index of ‘items_tolookfor’ array of items in another nested Array List ‘nested_data’ in javascript
JavaScript
x
42
42
1
const items_tolookfor = []
2
console.log(items_tolookfor) is as below
3
4
0: "urn:adsk.wipprod:fs.folder:co.uqbu12FFQZO6y7GxUs7cKA"
5
1: "urn:adsk.wipprod:fs.folder:co.uqbu12FFQZO6y7GxUs7cKA"
6
2: "urn:adsk.wipprod:fs.folder:co.uqbu12FFQZO6y7GxUs7cKA"
7
3: "urn:adsk.wipprod:fs.folder:co.uqbu12FFQZO6y7GxUs7cKA"
8
4: "urn:adsk.wipprod:fs.folder:co.uqbu12FFQZO6y7GxUs7cKA"
9
5: "urn:adsk.wipprod:fs.folder:co._rdgx-sJT36zVaGNILbvvQ"
10
length: 6
11
lastIndex: ( )
12
lastItem: ( )
13
[[Prototype]]
14
15
//////////////////////////////////////////////////////////
16
const nested_data = []
17
console.log(nested_data) is as follows:
18
19
0: Array(0)
20
length: 0
21
lastIndex: ( )
22
lastItem: ( )
23
[[Prototype]]: Array(0)
24
1: Array(0)
25
length: 0
26
lastIndex: ( )
27
lastItem: ( )
28
[[Prototype]]: Array(0)
29
2: Array(5)
30
0: "urn:adsk.wipprod:fs.folder:co.yoqKNIJMTmWvdxFIYGk8sg"
31
1: "urn:adsk.wipprod:fs.folder:co.eGqoz0IlTriGsYLTKbIrIA"
32
2: "urn:adsk.wipprod:fs.folder:co.O4tlfhMhSACS81dsygYJSw"
33
3: "urn:adsk.wipprod:fs.folder:co.FBQOhzXkSa6upov-iay5EQ"
34
4: "urn:adsk.wipprod:fs.folder:co.nXNGKsqTQUGr_hcTXy6U5g"
35
5: "urn:adsk.wipprod:fs.folder:co.uqbu12FFQZO6y7GxUs7cKA"
36
length: 5
37
lastIndex: ( )
38
lastItem: ( )
39
[[Prototype]]: Array(0)
40
41
///////////////////////////////////////////
42
How would I find indices for ‘items_tolookfor’ in the nested array list ‘nested_data’ Also, the corresponding data lies in the nested list ‘nested_data’ index[2][5]
I was trying this code:
JavaScript
1
14
14
1
console.log(items_tolookfor);
2
console.log(nested_data);
3
const found_indices = [];
4
5
for (const assdata in nested_data) {
6
const temp = [];
7
for (const fldr_data in items_tolookfor) {
8
const temp1 = assdata.indexOf(fldr_data);
9
temp.push(temp1);
10
}
11
found_indices.push(temp);
12
}
13
14
Expected result to be a console log output array with matching data for items_to_look_for array object found in nested_data array object, which is 0: [2][5], 1:[2][5], 2:[2][5], 3: [2][5], 4: [2][5], 5:[][]
Advertisement
Answer
Here’s how you could go about that:
JavaScript
1
39
39
1
const items_to_look_for = [
2
'urn:adsk.wipprod:fs.folder:co.uqbu12FFQZO6y7GxUs7cKA',
3
'urn:adsk.wipprod:fs.folder:co.uqbu12FFQZO6y7GxUs7cKA',
4
'urn:adsk.wipprod:fs.folder:co.uqbu12FFQZO6y7GxUs7cKA',
5
'urn:adsk.wipprod:fs.folder:co.uqbu12FFQZO6y7GxUs7cKA',
6
'urn:adsk.wipprod:fs.folder:co.uqbu12FFQZO6y7GxUs7cKA',
7
'urn:adsk.wipprod:fs.folder:co._rdgx-sJT36zVaGNILbvvQ'
8
];
9
10
const nested_data = [
11
[],
12
[],
13
[
14
'urn:adsk.wipprod:fs.folder:co.yoqKNIJMTmWvdxFIYGk8sg',
15
'urn:adsk.wipprod:fs.folder:co.eGqoz0IlTriGsYLTKbIrIA',
16
'urn:adsk.wipprod:fs.folder:co.O4tlfhMhSACS81dsygYJSw',
17
'urn:adsk.wipprod:fs.folder:co.FBQOhzXkSa6upov-iay5EQ',
18
'urn:adsk.wipprod:fs.folder:co.nXNGKsqTQUGr_hcTXy6U5g',
19
'urn:adsk.wipprod:fs.folder:co.uqbu12FFQZO6y7GxUs7cKA'
20
]
21
];
22
23
function findIndexRecursive(item, data) {
24
for (let i = 0, len = data.length; i < len; i++) {
25
if (data[i] === item) {
26
return [i];
27
} else if (data[i] instanceof Array) {
28
const nestedIndex = findIndexRecursive(item, data[i]);
29
if (nestedIndex) {
30
return [i].concat(nestedIndex);
31
}
32
}
33
}
34
return null;
35
}
36
37
for (const item of items_to_look_for) {
38
console.log(findIndexRecursive(item, nested_data));
39
}