Estoy buscando una forma elegante de hacer lo siguiente:
Tengo un objeto JS:
var sObject = {}; sObject[Col1] = "Value1"; sObject[Col2] = "Value2"; sObject[Col2] = "Value3";yo tambien tengo una matriz
var arrayCols=[]; arrayCols.push("Col2"); Lo que estoy tratando de hacer es eliminar todas las claves/valores de sObject donde Key != arrayCols key
Una vez que se hace lo necesario, mi sObject solo debe contener Col2: Value2 ya que Col2 es la única clave en arrayCols
Estoy intentando algo a lo largo de las líneas de:
var sObject = {}; sObject['Col1'] = "Value1"; sObject['Col2'] = "Value2"; sObject['Col2'] = "Value3"; var arrayCols = []; arrayCols.push("Col2"); let newObject = {}; for (const [key, value] of Object.entries(sObject)) { if (key in arrayCols) { newObject[key] = value; } } console.log(newObject);Puede usar Object.fromEntries y map :
var obj = { Col1: "Value1", Col2: "Value2", Col3: "Value3" }; var cols = ["Col2"]; var result = Object.fromEntries(cols.map(col => [col, obj[col]])); console.log(result);P.ej. usando reduce :
var sObject = {}; sObject.Col1 = "Value1"; sObject.Col2 = "Value2"; sObject.Col2 = "Value3"; var arrayCols = []; arrayCols.push("Col2"); sObject = arrayCols.reduce((a, k) => (a[k] = sObject[k], a), {}) console.log(sObject)