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

115
Visualizações
verificar si el objeto de matriz no contiene un objeto

Acabo de empezar a aprender javascript hoy y estoy tratando de verificar un objeto de matriz para verificar si la matriz NO contiene un objeto.

Para un ejemplo, estoy tratando de verificar si data2 no contiene data1 .

 let data1 = [{ x: 6232, y: 10536, type: "data4", dead: 0, uid: 3832864 }]; let data2 = [ { x: 6352, y: 10656, type: "data1", dead: 0, uid: 3832861 }, { x: 6322, y: 10546, type: "data2", dead: 0, uid: 3832862 }, { x: 6542, y: 15356, type: "data3", dead: 0, uid: 3832863 } ]; let check = Object.entries(data2).find(([key, value]) => value.uid != data1[0].uid); console.log(check); // Expected output to be fales.

Si alguien pudiera ayudarme o señalarme en la dirección correcta, realmente lo agradecería.

about 4 years ago · Juan Pablo Isaza
3 Respostas
Responde à pergunta

0

Debe comparar ( === ) el resultado de find con !undefined .

Editar: no necesita llamar a las entries en una matriz.

 const data1 = [{ x: 6232, y: 10536, type: "data4", dead: 0, uid: 3832864 }]; const data2 = [ { x: 6352, y: 10656, type: "data1", dead: 0, uid: 3832861 }, { x: 6322, y: 10546, type: "data2", dead: 0, uid: 3832862 }, { x: 6542, y: 15356, type: "data3", dead: 0, uid: 3832863 } ]; const check = data2.find(value => value.uid === data1[0].uid) !== undefined; console.log(check); // false

Como otros han notado, puede hacer un cortocircuito con some . Aquí hay una versión optimizada:

 /** * Detrmines if an object exists within an array of object * @param {Object[]} arr - An array of object to search * @param {Object} obj - An object to search for * @param {Function} fn - A pluck function used for comparing * @return {Boolean} Returns true if the item exists */ const contains = (arr, obj, fn) => (res => arr.some(e => fn(e) === res)) // Compare (fn(obj)); // Pre-calculate as `res` const data1 = [{ x: 6232, y: 10536, type: "data4", dead: 0, uid: 3832864 }]; const data2 = [ { x: 6352, y: 10656, type: "data1", dead: 0, uid: 3832861 }, { x: 6322, y: 10546, type: "data2", dead: 0, uid: 3832862 }, { x: 6542, y: 15356, type: "data3", dead: 0, uid: 3832863 } ]; const [obj] = data1; // Destructure first item console.log(contains(data2, obj, ({ uid }) => uid)); // false console.log(contains(data2, { uid: 3832862 }, ({ uid }) => uid)); // true

about 4 years ago · Juan Pablo Isaza Relatório

0

La forma en que aborda este problema está bien, y la otra respuesta lo ayudará a solucionarlo. Pero se supone que esto se resuelve idealmente como una matriz. Con Object.entries() está obteniendo los objetos de la matriz y los índices como valores y claves, respectivamente. Luego iteras sobre ellos.

Puede notar que ni siquiera está usando la variable clave.

No es necesario hacer todo esto ya que ya tiene una matriz .

Puede usar .some() , que devuelve verdadero/falso en función de una condición que cumple incluso uno de los elementos de la matriz. Exactamente lo que necesitas.

 let data1 = [{ x: 6232, y: 10536, type: "data4", dead: 0, uid: 3832864 }]; let data2 = [ { x: 6352, y: 10656, type: "data1", dead: 0, uid: 3832861 }, { x: 6322, y: 10546, type: "data2", dead: 0, uid: 3832862 }, { x: 6542, y: 15356, type: "data3", dead: 0, uid: 3832863 } ]; let check = data2.some(x => x.uid === data1[0].uid); console.log(check); // Expected output to be fales.

about 4 years ago · Juan Pablo Isaza Relatório

0

Tiene algunos errores de sintaxis en su código anterior. data2 es una matriz de objetos, por lo que no necesita hacer Object.entries() para obtener los elementos de la matriz. Usaría el método Array.some() aquí para que devuelva un valor booleano en lugar del elemento de datos real si espera tener un valor verdadero o falso registrado. el método Array.some() solo regresa una vez que un caso es verdadero y no tenemos que revisar todas las entradas en la matriz de objetos si ya encontramos una coincidencia.

 let data1 = [{ x: 6232, y: 10536, type: "data4", dead: 0, uid: 3832864 }]; let data2 = [ { x: 6352, y: 10656, type: "data1", dead: 0, uid: 3832861 }, { x: 6322, y: 10546, type: "data2", dead: 0, uid: 3832862 }, { x: 6542, y: 15356, type: "data3", dead: 0, uid: 3832863 }, { x: 6232, y: 10536, type: "data4", dead: 0, uid: 3832864 } ]; let check = data2.some(entry => entry.uid == data1[0].uid); console.log(check); // Expected output to be true.

Si no tuviera una identificación única para cada entrada, una forma rápida y sucia de hacerlo sería clasificar ambos objetos y luego comparar las cadenas. Esto tiene sus limitaciones porque el orden de los campos en su objeto debe ser el mismo.

 var object = { 'a': 1, 'b':2}; var other = { 'a': 1, 'b':2 }; console.log(JSON.stringify(object) == JSON.stringify(other)); //this will print true

Para una comparación profunda de objetos, me gusta usar el método isequal de lodash

 var object = { 'a': 1, 'b':2}; var other = { 'b':2, 'a': 1 }; console.log(JSON.stringify(object) == JSON.stringify(other)); //this will print false console.log(_.isEqual(object, other)); //this will print true

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