I have 2 arrays as follows.
Array 1
JavaScript
x
17
17
1
let array1 = [
2
3
{
4
name:1,
5
options: {layer:mynode:Cat}
6
},
7
{
8
name:randomName,
9
options: {layer:mynode:Dog}
10
},
11
{
12
name:randomName2,
13
options: {layer:mynode:Lion}
14
}
15
16
]
17
And the next array
Array 2
JavaScript
1
2
1
let array2 = ["Dog","Lion","Cat"]
2
I want to sort the array1 according to the data order in array2. I have tried something like this but it’s giving me a undefined result
JavaScript
1
2
1
sortedArr = array2.map((object,key) => array1[((options.layers).split(':'))[1]]);
2
Can someone help me with this?
Advertisement
Answer
JavaScript
1
23
23
1
let array1 = [
2
{
3
name: 1,
4
options: { layer: "mynode:Cat" },
5
},
6
{
7
name: 2,
8
options: { layer: "mynode:Dog" },
9
},
10
{
11
name: 3,
12
options: { layer: "mynode:Lion" },
13
},
14
];
15
let array2 = ["Dog", "Lion", "Cat"];
16
17
array1.sort((a, b) => {
18
return array2.indexOf(a.options.layer.split(":")[1]) >
19
array2.indexOf(b.options.layer.split(":")[1])
20
? 1 : -1;
21
});
22
23
console.log(array1);