-2

I have 2 arrays like this:

array1 = ["green", "blue", "red"];
array2 = ["green", "green", "red", "red", "green", "green", "blue", "red", "Blue"];

But I need an output like

output_array = ["green", "green", "green", "green", "blue", "Blue", "red", "red", "red"];
Kobe
  • 6,226
  • 1
  • 14
  • 35
Ravi
  • 11

3 Answers3

0

You can use sort alongside indexOf:

const arr1 = ["green", "blue", "red"]
const arr2 = ["green", "green", "red", "red", "green", "green", "blue", "red", "blue"]

console.log(arr2.sort((a, b) => arr1.indexOf(a) - arr1.indexOf(b)))
Kobe
  • 6,226
  • 1
  • 14
  • 35
0

Hope this helps you !

    array1=["green","red","blue"]; 
    array2=["green","green","red","red","green","green","blue","red","Blue"];

    const map = array2.reduce((acc, e) => acc.set(e, (acc.get(e) || 0) + 1), new Map());
    let result = array1.reduce((acc, a)=>  [...acc, ...Array(map.get(a)).fill(a)] , []);
    console.log(result);
Saurabh Yadav
  • 3,303
  • 1
  • 10
  • 20
-1

I don't know if you mean alphabetically order, but you could merge both arrays and then sort the result:

let output_array = array1.concat(array2);

output_array.sort()
xale94
  • 424
  • 5
  • 12