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

184
Visualizações
Cómo obtener la matriz de objetos con el objeto de matriz y la lista de matriz según las condiciones usando javascript

Tengo una matriz de objetos y matrices

cómo comparar según las condiciones usando javascript

  1. obtener la matriz de objetos que tienen la misma propiedad de value

  2. luego, según la lista de valores, si el cid de verificación es el mismo, devuelva ambos arreglos de objetos

  3. o luego, según la lista de valores. De lo contrario, verifique que el cid sea diferente pero incluya IN o FI . Devuelva vacío.

    o devolver ese objeto de matriz

 var listcode =["IN","FI"]; var listarr1 =[ {id:1, name: "dino", cid: "IN", value: "A1234"}, {id:2, name: "hem", cid: "IN", value: "B3456"}, {id:3, name: "zen", cid: "SP", value: "B3456"}, {id:4, name: "ben", cid: "FI", value: "C5678"}, ] var listarr2 =[ {id:1, name: "dino", cid: "IN", value: "A1234"}, {id:2, name: "hem", cid: "IN", value: "B3456"}, {id:3, name: "zen", cid: "SG", value: "C5678"}, {id:4, name: "ben", cid: "SP", value: "C5678"}, ] Expected Output //same value , and has "IN" //listarr1 [] //listarr2 //same value no include of `FI or IN` so return [ {id:3, name: "zen", cid: "SG", value: "C5678"}, {id:4, name: "ben", cid: "SP", value: "C5678"} ] I tried const checkIdMembers = list => { const idlist = ['IN', 'FI']; const resultarray = list .map((obj, i) => list.find((element, index) => { if (i !== index && element.value === obj.value && (element.cid === obj.cid || idlist.includes(element.cid)) { return obj; } })) .filter(x => x); return resultarray; }; const result = checkIdMembers(listarr1);
about 4 years ago · Juan Pablo Isaza
3 Respostas
Responde à pergunta

0

Creo que es más fácil si inviertes el orden de las operaciones.

 const listcode =["IN","FI"]; const listarr1 =[ {id:1, name: "dino", cid: "IN", value: "A1234"}, {id:2, name: "hem", cid: "IN", value: "B3456"}, {id:3, name: "zen", cid: "SP", value: "B3456"}, {id:4, name: "ben", cid: "FI", value: "C5678"}, ] const listarr2 =[ {id:1, name: "dino", cid: "IN", value: "A1234"}, {id:2, name: "hem", cid: "IN", value: "B3456"}, {id:3, name: "zen", cid: "SG", value: "C5678"}, {id:4, name: "ben", cid: "SP", value: "C5678"}, ] const listarr3 =[ {id:1, name: "dino", cid: "IN", value: "A1234"}, {id:2, name: "hem", cid: "IN", value: "B3456"}, {id:3, name: "zen", cid: "IN", value: "C5678"}, {id:4, name: "ben", cid: "IN", value: "C5678"}, ] const checkIdMembers = data => { const ALL = 'ALL' const dataObj = data.reduce((res, d) => { const existingValue = res[d.value] || {} const existing = existingValue[d.cid] || [] const existingAll = existingValue[ALL] || [] existingValue[d.cid] = [...existing, d] if(!listcode.includes(d.cid)){ existingValue[ALL] = [...existingAll, d] } res[d.value] = existingValue return res }, {}) return Object.values(dataObj).flatMap(v => { return Object.values(v).filter(group => group.length > 1) }) } console.log(checkIdMembers(listarr1)) console.log(checkIdMembers(listarr2)) console.log(checkIdMembers(listarr3))

Me doy cuenta de que mi respuesta no fue correcta, así que la edité.

Me faltaba uno de sus requisitos previos y tuve que cambiar un poco el enfoque.

Transformé tu matriz inicial en un objeto como este

 { "<value>" : { "<cid>" : [...elements with same cid and value] .... "ALL" : [...elements with same value different cid but not in listcode] } }

Una vez que tenga este objeto, puede tomar los valores y luego usar flatMap en él para fusionar todos los grupos de matriz que tienen una longitud> 1

espero que esto ayude

about 4 years ago · Juan Pablo Isaza Relatório

0

No sé si entendí correctamente lo que necesita, pero creo que puede usar un filter para obtener una matriz de los elementos necesarios. Se ve así, las condiciones pueden variar de acuerdo a sus necesidades:

 const data = [{ id: 1, name: "dino", cid: "IN", value: "A1234" }, { id: 2, name: "hem", cid: "IN", value: "B3456" }, { id: 3, name: "zen", cid: "SG", value: "C5678" }, { id: 4, name: "ben", cid: "SP", value: "C5678" }, ] const elementsWithIN = data.filter(el => el.cid === 'IN'); const elementsWithoutINOrSP = data.filter(el => !['IN', 'SP'].includes(el.cid)) console.log('elementsWithIN: ', elementsWithIN) console.log('elementsWithoutINOrSP: ', elementsWithoutINOrSP)

about 4 years ago · Juan Pablo Isaza Relatório

0

Entonces, si entendí correctamente, esto es lo que quieres lograr.

 var listcode =["IN","FI"]; var listarr1 =[ {id:1, name: "dino", cid: "IN", value: "A1234"}, {id:2, name: "hem", cid: "IN", value: "B3456"}, {id:3, name: "zen", cid: "SP", value: "B3456"}, {id:4, name: "ben", cid: "FI", value: "C5678"}, ] var listarr2 =[ {id:1, name: "dino", cid: "IN", value: "A1234"}, {id:2, name: "hem", cid: "IN", value: "B3456"}, {id:3, name: "zen", cid: "SG", value: "C5678"}, {id:4, name: "ben", cid: "SP", value: "C5678"}, ] //same value , and has "IN" //listarr1 const filterForSameIncluding = (codeToInclude, array) =>{ array = array.filter(o => codeToInclude.includes(o.cid)); var countList = array.reduce(function(p, c){ p[c.value] = (p[c.value] || 0) + 1; return p; }, {}); return array.filter(function(obj){ return countList[obj.value] > 1; }); } const filterForSameExcluding = (codeToExclude, array) =>{ array = array.filter(o => !codeToExclude.includes(o.cid)); var countList = array.reduce(function(p, c){ p[c.value] = (p[c.value] || 0) + 1; return p; }, {}); return array.filter(function(obj){ return countList[obj.value] > 1; }); } //listarr2 //same value no include of `FI or IN` so return const result1 = filterForSameIncluding(["IN"], listarr1); const result2 = filterForSameExcluding(["IN", "FI"], listarr2); console.log("same value with including codes=",result1) console.log("same value with excluding codes=", result2)

about 4 years ago · Juan Pablo Isaza 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