-4

I am facing a problem.

var arr = ['VBH', 'KTL', 'PVC', 'IF & AF', 'BC', 'CC&HC', 'UBS', 'FAD&DVD'];
var obj = [
             {"materialTypeID":9,"name":"","abbreviation":"UBS","count":1,"duns":0,"plantId":0},
             {"materialTypeID":18,"name":null,"abbreviation":"PVC","count":1,"duns":0,"plantId":0},
             {"materialTypeID":7,"name":"","abbreviation":"FAD&DVD","count":4,"duns":0,"plantId":0}
          ];

and I want the result in sorting format as arr variable shows such as VBH object or KTL object if they found.

[       
{"materialTypeID":18,"name":null,"abbreviation":"PVC","count":1,"duns":0,"plantId":0},
{"materialTypeID":9,"name":"","abbreviation":"UBS","count":1,"duns":0,"plantId":0},
{"materialTypeID":7,"name":"","abbreviation":"FAD&DVD","count":4,"duns":0,"plantId":0}
]

In java script, I want to implement.

Thanks,

Niladri
  • 5,832
  • 2
  • 23
  • 41
Himani
  • 37
  • 8

2 Answers2

1

Loop the arr and use filter to get the element from the obj. filter will return a new array, check if the length of this new array is more than 0 , then use push to put the element

var arr = ['VBH', 'KTL', 'PVC', 'IF & AF', 'BC', 'CC&HC', 'UBS', 'FAD&DVD']
var obj = [{
  "materialTypeID": 9,
  "name": "",
  "abbreviation": "UBS",
  "count": 1,
  "duns": 0,
  "plantId": 0
}, {
  "materialTypeID": 18,
  "name": null,
  "abbreviation": "PVC",
  "count": 1,
  "duns": 0,
  "plantId": 0
}, {
  "materialTypeID": 7,
  "name": "",
  "abbreviation": "FAD&DVD",
  "count": 4,
  "duns": 0,
  "plantId": 0
}]

let sortedArray = [];

arr.forEach(function(item) {
  let getElem = obj.filter(function(items) {
    return items.abbreviation === item

  })
  if (getElem.length > 0) {
    sortedArray.push(getElem[0])
  }

})

console.log(sortedArray)
brk
  • 48,835
  • 10
  • 56
  • 78
0

It seems that you want to sort by decreasing materialTypeID.

Your problem has already been resolved there : Javascript object list sorting by object property

obj.sort(function(a, b) { 
    return b.materialTypeID - a.materialTypeID;
})