object properties playtime

by Gerald Gillespie

JavaScript

console.clear(); 


//1. when you want to extract a subset of properties of an object into variables
const obj = { a : 'A', b : 'B', c : 'C', d : {  D : 'dee'}};
const picked1 = (({ a, c ,d}) => ({ a, c ,d}))(obj);

//2. when you want to extract a subset of properties into another object use this; 
//3. when you want to extract a subset of properties into a new object use this; 
//4. when you want to pass the properties you want as an argument then use this:

Object.defineProperty(Object.prototype, 'extract',{
enumerable : false,writeable : false, value : function(keystrings,donor,recipient={}){
  keystrings.forEach( key=>{
  console.log(key, donor[key])
    recipient[key] = donor[key]
  })
  return recipient;
}}); 

const keys=  ['a','c','d']; 

const picked3 = Object.extract( keys, obj );

const picked2 = Object.extract( keys, obj, { f : 'F'});

const picked4 = (( msg, obj)=>{
	if( obj.b)
	  return 'failed!';
    else 
	return `${msg}: ${obj.a}`
 
})('printed!', Object.extract(keys, obj)); 


Object.assign( picked2.d, { E : 'e'});
//picked2.d.E = 'e';


console.log('**');
console.log( '1',picked1);

console.log('2', picked2); 

console.log('3', picked3); 

console.log('4', picked4);