Business
Jobs
  • About Us
  • Solutions
    • Job Postings
      Post your job and receive qualified candidates in 48h.
    • Candidate Assessments
      500+ technical and psychological tests, plus anti-fraud.
    • Headhunting
      Tailor-made executive search from start to finish.
    • Payroll + EOR
      Payroll dispersal and EOR across 15+ LATAM countries.
  • Pricing
  • Jobs

0

175
Views
encuentre la clave y reemplace el valor con ella en javascript / node js

 let data = [{ system: { id: "4gSSbjCFEorYXqrgDIP2FA", type: "Entry", name: "User" }, DataDetails: { shortOption: { "en-us": "some value" }, mediaFile: [{ sys: { type: "Link", link: "Entry", id: "7kRzyt4PFo", }, }, { sys: { type: "Link", link: "Entry", id: "2OspeCtNK0s", }, }, ], mediaGalary: [{ sys: { type: "Link", link: "Asset", id: "gHcw3Z1Ko", }, }, { sys: { type: "Link", linkType: "Asset", id: "h2cPiuU9jIz", }, }, ], mediaExplore: [{ sys: { type: "Link", link: "Asset", id: "euwcbds3282", }, }, { sys: { type: "Link", linkType: "Asset", id: "jndsiw23912", }, }, ], singleMediaImage: { sys: { type: "Link", linkType: "Asset", id: "7kRzyt4PFo", }, }, }, }, { system: { id: "1aBOO8tu3lUsjtICuIbUM5", type: "Entry", name: "User" }, DataDetails: { short: { "en-us": "details of shorts" }, shortSlugOption: { "hi-In": "options" }, booleanField: { kl: "true" }, }, }, { system: { id: "2pOUGnI1oRD7nsrYs600HA", type: "Entry", name: "Dummy" }, DataDetails: { testingNewValue: [{ sys: { type: "Link", link: "Entry", id: "66rzYr2BpWL", }, }, { sys: { type: "Link", link: "Entry", id: "1VTBHdLTdSW", }, }, ], }, }, { system: { id: "66rzYr2BpWL1VTBHdLTdSW", type: "Entry", name: "new" }, DataDetails: { oneReference: { sys: { type: "Link", linkType: "Asset", id: "h2cPiuU9jIz", }, }, multiReference: [{ sys: { type: "Link", link: "Asset", id: "gHcw3Z1Ko", }, }, { sys: { type: "Link", link: "Asset", id: "h2cPiuU9jIz", }, }, ], }, }, { system: { id: "cIb5mqEBRWDD6hrNmFmFE", type: "Entry", name: "new" }, DataDetails: { testingNewValue: { "hi-IN": "jksdsdo" } }, }, { system: { id: "7kRzyt4PFrX13gHcw3Z1Ko", type: "Entry", name: "Dummy" }, DataDetails: { testingNewValue: { "en-us": "kknksdo" } }, }, ]; let anotherObj = { "gHcw3Z1Ko": { status: true, tag: [], filename: "exute-image.jpg", is_dir: false, parent_uid: null, }, "h2cPiuU9jIz": { status: true, tag: [], filename: "wallpapers-6.jpg", is_dir: false, parent_uid: null, }, "7kRzyt4PFo": { status: true, tag: [], filename: "in-space-rk.jpg", is_dir: false, parent_uid: null, }, "euwcbds3282": { status: true, tag: [], filename: "justice-league.jpg", is_dir: false, parent_uid: null, }, "jndsiw23912": { status: true, tag: [], filename: "batman.jpg", is_dir: false, parent_uid: null, }, }; let res = data.reduce((acc, curr) => { if (!acc[curr.system.name]) { acc[curr.system.name] = {}; } let detailsObj = {}; let assetArray=[]; for (let key of Object.keys(curr.DataDetails)) { detailsObj[key] = Object.values(curr.DataDetails[key])[0]; if (typeof Object.values(curr.DataDetails[key])[0] === "object") { Object.values(curr.DataDetails[key]).map((type) => { if (Array.isArray(type)) { type.map((link) => { if (link.sys.link === "Asset") { for (let id in anotherObj) { if (link.sys.id === id) { assetArray.push(anotherObj[id]); detailsObj[key] = assetArray; } } } }); } else { if (type.sys !== undefined) { // for single Asset if (type.sys.link === "Asset") { for (let id in anotherObj) { if (type.sys.id === id) { detailsObj[key] = [anotherObj[id]]; } } } } } }); } } acc[curr.system.name][curr.system.id] = { title: curr.system.id, uid: curr.system.id, url: `/${curr.system.name}/${curr.system.id}`, ...detailsObj, }; return acc; }, {}); console.log(res);

Estoy tratando de poner dos datos de objetos en una salida, pero al leer el enlace que es Activo

pero en la lista de matrices múltiples, la salida se muestra como salida de activo único, ya que mediaFile contiene dos entradas, pero no sé dónde estoy haciendo mal y me muestra un valor único

ya que mi propósito principal es reemplazar sys:{id:erfrdvsdf} por los datos clave de anotherObj

entonces debería verse así, por ejemplo, mi salida es así

 "User": { "4gSSbjCFEorYXqrgDIP2FA": { "title": "4gSSbjCFEorYXqrgDIP2FA", "uid": "4gSSbjCFEorYXqrgDIP2FA", "url": "/User/4gSSbjCFEorYXqrgDIP2FA", "shortOption": "some value", "mediaFile": { "sys": { "type": "Link", "link": "Entry", "id": "7kRzyt4PFo" } }, "mediaGalary": [ { /**id:7**/ "status": true, "tag": [], "filename": "in-space-rk.jpg", "is_dir": false, "parent_uid": null } ], "singleMediaImage": { "type": "Link", "linkType": "Asset", "id": "h2cPiuU9jIz" } }, },

pero debería ser así

 "User": { "4gSSbjCFEorYXqrgDIP2FA": { "title": "4gSSbjCFEorYXqrgDIP2FA", "uid": "4gSSbjCFEorYXqrgDIP2FA", "url": "/User/4gSSbjCFEorYXqrgDIP2FA", "shortOption": "some value", "mediaFile": { "sys": { "type": "Link", "link": "Entry", "id": "7kRzyt4PFo" } }, "mediaGalary": [ { "status": true, "tag": [], "filename": "in-space-rk.jpg", "is_dir": false, "parent_uid": null }, { "status": true, "tag": [], "filename": "wallpapers-6.jpg", "is_dir": false, "parent_uid": null }, ], "mediaExplore": [ { "status": true, "tag": [], "filename": "justice-league", "is_dir": false, "parent_uid": null }, { "status": true, "tag": [], "filename": "batman.jpg", "is_dir": false, "parent_uid": null }, ], "singleMediaImage": [ { "status": true, "tag": [], "filename": "wallpapers-6.jpg", "is_dir": false, "parent_uid": null }, ] }, },

pero mi salida esperada es lo que estoy buscando

Debido a esto, estoy atascado con el campo de entrada porque tengo el mismo problema que tengo con el campo de entrada, ya que escribí el mismo código para obtener los campos de entrada que están en Array y para el campo de entrada única.

donde se rompio mi codigo no lo se

Sé que este es un código largo, pero ayúdame a resolver este error ya que debido a esto no voy a avanzar.

over 4 years ago · Santiago Trujillo
1 answers
Answer question

0

Te faltan algunos valores porque no verificas linkType . Sus bucles sys.link pero no sys.linkType .

Utilizar:

 link.sys.link === 'Asset' || link.sys.linkType === 'Asset'

y

 type.sys.link === 'Asset' || type.sys.linkType === 'Asset'

Además, esta línea anulará su matriz: detailsObj[key] = [anotherObj[id]];

Reemplázalo con:

 assetArray.push(anotherObj[id]); detailsObj[key] = assetArray;

Para ser claros, este código no es bueno. Algunas sugerencias:

  • Divide tu código en unidades lógicas más pequeñas. No anide 5 niveles de bucles. Cree funciones que realicen operaciones pequeñas y asígneles el nombre correspondiente (por ejemplo, en lugar de hacer for (let id in anotherObj) { ... } , coloque la lógica dentro de una función llamada findAssetData )
  • Comprender la diferencia entre Array.prototype.forEach y Array.prototype.map (el uso del mapa en este código es incorrecto)
  • Use herramientas de calidad de código como eslint, le ayudará si es un principiante
over 4 years ago · Santiago Trujillo Report
Answer question
Find remote jobs

Discover the new way to find a job!

Top jobs
Top job categories
Business
Post vacancy Pricing Sales
Legal
Terms and conditions Privacy policy
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Show me some job opportunities
There's an error!