Empresas
Empregos
  • Sobre nós
  • Soluções
    • Publicação de vagas
      Publique sua vaga e receba candidatos qualificados em 48h.
    • Avaliações de candidatos
      Mais de 500 testes técnicos e psicológicos, mais anti-fraude.
    • Headhunting
      Busca executiva personalizada do início ao fim.
    • Folha de Pagamento + EOR
      Dispersão de folha e EOR em mais de 15 países da LATAM.
  • Preços
  • Empregos

0

180
Visualizações
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 Respostas
Responde à pergunta

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 Relatório
Responde à pergunta
Encontrar trabalhos remotos

Descubra a nova forma de encontrar um emprego!

melhores empregos
Principais categorias de trabalho
Empresas
Postar vaga Preços Comercial
Jurídico
Termos e Condições Política de privacidade
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomende algumas ofertas para mim
Preciso de ajuda