Skip to content Skip to sidebar Skip to footer

Filter Object Props Based On The Specified Array

I have an object with the following structure { cardControlItem: 'Tidak', cardDirectUseItem: 'Tidak', kbUnspscUuid: '6a564b8e-2976-4fde-8759-7951970d7500', substoreUuid: '2f2

Solution 1:

constfilter = (obj, arr) => Object.assign(...arr.map(el => ({[el]: obj[el]})));

so one can do

const result = filter({a:1, b:2, c:3}, ["a", "b"]);

Solution 2:

Try this solution. I am filter the properties which are in the obj (filter part) and then iterate over the properties which exist (reduce part) and assign values of the properties into new object (acc).

const obj = { 
   cardControlItem: 'Tidak',
   cardDirectUseItem: 'Tidak',
   kbUnspscUuid: '6a564b8e-2976-4fde-8759-7951970d7500',
   substoreUuid: '2f2b04bb-8b80-4b1f-b827-bf20311e31ee',
   cardDetailMin: 654,
   cardDetailMax: 65,
   cardDetailIncrement: 754,
   cardDetailPriceOverall: 4534,
   cardDetailPriceUnit: 0,
   ltMeasurementMinUuid: 'fddca37a-d0a3-40a4-8537-e84375b01601',
   ltMeasurementMaxUuid: '2bc6d7d2-5167-4459-9910-a65839008afd' 
};

const keys = ['cardControlItem', 'cardDirectUseItem', 'kbUnspscUuid', 'substoreUuid', 'stockCardGroupUuid', 'stockCardBatchUuid'];

const mapped = keys.filter(key => obj.hasOwnProperty(key))
                   .reduce((acc, key) => { acc[key] = obj[key]; return acc }, {});

console.log(mapped);

Solution 3:

.Loop throught the array and check if the object has this key, if it is so then create a new object with this keys instead of mutating the original one

var orgObject = {
  cardControlItem: 'Tidak',
  cardDirectUseItem: 'Tidak',
  kbUnspscUuid: '6a564b8e-2976-4fde-8759-7951970d7500',
  substoreUuid: '2f2b04bb-8b80-4b1f-b827-bf20311e31ee',
  cardDetailMin: 654,
  cardDetailMax: 65,
  cardDetailIncrement: 754,
  cardDetailPriceOverall: 4534,
  cardDetailPriceUnit: 0,
  ltMeasurementMinUuid: 'fddca37a-d0a3-40a4-8537-e84375b01601',
  ltMeasurementMaxUuid: '2bc6d7d2-5167-4459-9910-a65839008afd'
}


var keys = ['cardControlItem', 'cardDirectUseItem', 'kbUnspscUuid', 'substoreUuid', 'stockCardGroupUuid', 'stockCardBatchUuid']

var newObj = {};
keys.forEach(function(item) {
  if (orgObject.hasOwnProperty(item)) {
    newObj[item] = orgObject[item]

  }

})

console.log(newObj)

Solution 4:

var data = { cardControlItem: 'Tidak',
  cardDirectUseItem: 'Tidak',
  kbUnspscUuid: '6a564b8e-2976-4fde-8759-7951970d7500',
  substoreUuid: '2f2b04bb-8b80-4b1f-b827-bf20311e31ee',
  cardDetailMin: 654,
  cardDetailMax: 65,
  cardDetailIncrement: 754,
  cardDetailPriceOverall: 4534,
  cardDetailPriceUnit: 0,
  ltMeasurementMinUuid: 'fddca37a-d0a3-40a4-8537-e84375b01601',
  ltMeasurementMaxUuid: '2bc6d7d2-5167-4459-9910-a65839008afd' };
  
 var keys = ['cardControlItem', 'cardDirectUseItem', 'kbUnspscUuid', 'substoreUuid', 'stockCardGroupUuid', 'stockCardBatchUuid'];
 
 var new_data = {};
 for(var i = 0; i < keys.length; i++){
  if(data.hasOwnProperty(keys[i])){
    new_data[keys[i]] = data[keys[i]];
  }
 }
 
 console.log(new_data);

Post a Comment for "Filter Object Props Based On The Specified Array"