Search code examples
javascriptarrayssortingarraylistmergesort

sorting 2 array in ascending order javascript


I have 2 arrays

let array1 = [
{
    "label": "4kg",
    "value": "4kg",
    "optionId": "x_size",
    "mapKey": "sku-Food_x_size",
    "valueItem": 491,
    "optionName": "Size"
},
{
    "label": "1.3kg",
    "value": "1.3kg",
    "optionId": "x_size",
    "mapKey": "sku-Food_x_size",
    "valueItem": 699,
    "optionName": "Size"
},
{
    "label": "300g",
    "value": "300g",
    "optionId": "x_size",
    "mapKey": "sku-Food_x_size",
    "valueItem": 639,
    "optionName": "Size"
},
{
    "label": "10kg",
    "value": "10kg",
    "optionId": "x_size",
    "mapKey": "sku-Food_x_size",
    "valueItem": 492,
    "optionName": "Size"
}
]

below is array2

let array2 = ['300g', '1.3kg', '4kg', '10kg']

so i need my final array sorting of arrayy value like below

let array3 = [
{
    "label": "300g",
    "value": "300g",
    "optionId": "x_size",
    "mapKey": "sku-Food_x_size",
    "valueItem": 639,
    "optionName": "Size"
   
},
{
    "label": "1.3kg",
    "value": "1.3kg",
    "optionId": "x_size",
    "mapKey": "sku-Food_x_size",
    "valueItem": 699,
    "optionName": "Size"
},
{
    "label": "4kg",
    "value": "4kg",
    "optionId": "x_size",
    "mapKey": "sku-Food_x_size",
    "valueItem": 491,
    "optionName": "Size"
     
},
{
    "label": "10kg",
    "value": "10kg",
    "optionId": "x_size",
    "mapKey": "sku-Food_x_size",
    "valueItem": 492,
    "optionName": "Size"
}
]

Any idea how i can map this ?


Solution

  • You can provide a comparator to Array.prototype.sort():

    array1.sort((a, b) => array2.indexOf(a.value) - array2.indexOf(b.value));