Search code examples
javascriptarraysmappinglookupreduce

get the array objects in the exact index


I have an array

 let items=[5,1,3,4,2]

and an object array

   let objectItem=[
            {id:"item-1", name: "Total revenue",selected:true, order: 1},
            {id:"item-2", name: "Total tax",selected:true, order: 2},
            {id:"item-3", name: "Sales Report",selected:false, order: 3},
            {id:"item-4", name: "Total parking",selected:false, order: 4},
            {id:"item-5", name: "Sales maximum",selected:false, order: 5},
            {id:"item-6", name: "Amount Collected",selected:true, order: 6},
            {id:"item-7", name: "Total fall",selected:false, order: 7}
        ]

i need to get the array objectItem in the order in which it matches the order key with the item array element in the exact order.

my resultant array should be like this,

objectItem=[
        {id:"item-5", name: "Sales maximum",selected:false, order: 5},
        {id:"item-1", name: "Total revenue",selected:true, order: 1},
        {id:"item-3", name: "Sales Report",selected:false, order: 3},
        {id:"item-4", name: "Total parking",selected:false, order: 4},
        {id:"item-2", name: "Total tax",selected:true, order: 2},
    ]

so far i was able to acheieve the object item array in the ascending order of order key after applying

const itemArr=objectItem.filter((itm)=>{
    return items.indexOf(itm.order) > -1;
  });

is there any work around to obtain the resulting array with the objects with order value as in the exact index of the items array


Solution

  • let items=[5,1,3,4,2]
    
    let objectItem=[
      {id:"item-1", name: "Total revenue",selected:true, order: 1},
      {id:"item-2", name: "Total tax",selected:true, order: 2},
      {id:"item-3", name: "Sales Report",selected:false, order: 3},
      {id:"item-4", name: "Total parking",selected:false, order: 4},
      {id:"item-5", name: "Sales maximum",selected:false, order: 5},
      {id:"item-6", name: "Amount Collected",selected:true, order: 6},
      {id:"item-7", name: "Total fall",selected:false, order: 7}
    ]
    
    console.log(items.map(i=>objectItem.find(({order:o})=>o===i)))