Estoy tratando de aislar el valor aceptado de un objeto en función de los valores dados acceptValues acceptedValues = ["250", "300"] por lo que el resultado debería ser dos matrices diferentes arrAcceptedValues , notArrAcceptedValues ¡Creo que todavía me falta la lógica para encontrar los valores no coincidentes! espero que alguien pueda explicarlo
const acceptedValues = ["250", "300"]; const myObj = { 250: [1222, 1330, 1334, 1336, 6130, 6154, 6186, 6311, 6314], 300: [1112, 1146, 1186, 1224, 6657], 315: [710, 717], 545: [4778], 700: [637, 969, 1321, 6534, 1324, 6898, 738, 6899], 750: [6323], 900: [1717, 1718, 1720], 1500: [5824, 5830, 5831, 5835, 5919, 5920, 5989], }; let arrAcceptedValues = []; let notArrAcceptedValues = []; for (let iterator of acceptedValues) { // find all values that IS contains in the myObj array ["250", "300"] if (myObj[iterator]) { const returnData = myObj[iterator]; arrAcceptedValues.push(returnData); } // find all values that NOT contains in the myObj array ["250", "300"] for (const keyIterator of Object.keys(myObj)) { if (keyIterator !== iterator) { notArrAcceptedValues.push(Object.values(myObj)); } } } console.log("arrAcceptedValues", arrAcceptedValues); console.log("notArrAcceptedValues", notArrAcceptedValues);Cita en bloque
Puede lograr fácilmente los resultados usando Object.keys , forEach e include
Incluso puedes hacer una sola línea también como:
Object.keys(myObj).forEach((k) =>(acceptedValues.includes(k) ? arrAcceptedValues : notArrAcceptedValues).push(myObj[k])); const acceptedValues = ["250", "300"]; const myObj = { 250: [1222, 1330, 1334, 1336, 6130, 6154, 6186, 6311, 6314], 300: [1112, 1146, 1186, 1224, 6657], 315: [710, 717], 545: [4778], 700: [637, 969, 1321, 6534, 1324, 6898, 738, 6899], 750: [6323], 900: [1717, 1718, 1720], 1500: [5824, 5830, 5831, 5835, 5919, 5920, 5989], }; let arrAcceptedValues = []; let notArrAcceptedValues = []; Object.keys(myObj).forEach((k) => { acceptedValues.includes(k) ? arrAcceptedValues.push(myObj[k]) : notArrAcceptedValues.push(myObj[k]); }); console.log(arrAcceptedValues); console.log(notArrAcceptedValues); /* This is not a part of answer. It is just to give the output fill height. So IGNORE IT */ .as-console-wrapper { max-height: 100% !important; top: 0; }o
const acceptedValues = ["250", "300"]; const myObj = { 250: [1222, 1330, 1334, 1336, 6130, 6154, 6186, 6311, 6314], 300: [1112, 1146, 1186, 1224, 6657], 315: [710, 717], 545: [4778], 700: [637, 969, 1321, 6534, 1324, 6898, 738, 6899], 750: [6323], 900: [1717, 1718, 1720], 1500: [5824, 5830, 5831, 5835, 5919, 5920, 5989], }; let arrAcceptedValues = []; let notArrAcceptedValues = []; Object.keys(myObj).forEach((k) =>(acceptedValues.includes(k) ? arrAcceptedValues : notArrAcceptedValues).push(myObj[k])); console.log(arrAcceptedValues); console.log(notArrAcceptedValues); /* This is not a part of answer. It is just to give the output fill height. So IGNORE IT */ .as-console-wrapper { max-height: 100% !important; top: 0; }Puede usar Object.entries() con Array.prototype.reduce()
Código:
const myObj = { 250: [1222, 1330, 1334, 1336, 6130, 6154, 6186, 6311, 6314], 300: [1112, 1146, 1186, 1224, 6657], 315: [710, 717], 545: [4778], 700: [637, 969, 1321, 6534, 1324, 6898, 738, 6899], 750: [6323], 900: [1717, 1718, 1720], 1500: [5824, 5830, 5831, 5835, 5919, 5920, 5989], } const acceptedValues = ['250', '300'] const result = Object.entries(myObj).reduce((a, [k, v]) => { (acceptedValues.includes(k) ? a.arrAcceptedValues : a.notArrAcceptedValues).push(v) return a }, { arrAcceptedValues: [], notArrAcceptedValues: [] }) console.log(result)Siguiendo la respuesta de decpk, aquí está la solución con map.
const acceptedValues = ["250", "300"]; const myObj = { 250: [1222, 1330, 1334, 1336, 6130, 6154, 6186, 6311, 6314], 300: [1112, 1146, 1186, 1224, 6657], 315: [710, 717], 545: [4778], 700: [637, 969, 1321, 6534, 1324, 6898, 738, 6899], 750: [6323], 900: [1717, 1718, 1720], 1500: [5824, 5830, 5831, 5835, 5919, 5920, 5989], }; const arrAcceptedValues = []; const notArrAcceptedValues = []; Object.keys(myObj).map((key) => { (acceptedValues.includes(key) ? arrAcceptedValues : notArrAcceptedValues).push(myObj[key]) }) console.log(arrAcceptedValues); console.log(notArrAcceptedValues);