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

258
Visualizações
¿Hay un valor de índice de identidad en JavaScript?

En JavaScript, los valores de los objetos y las matrices se pueden indexar de la siguiente manera: objOrArray[index] . ¿Hay un valor de "índice" de identidad?

En otras palabras:

¿Hay un valor de x que hace que lo siguiente sea siempre cierto?

 let a = [1, 2, 3, 4]; /* Is this true? */ a[x] == a let b = { a: 1, b: 2, c: 3 }; /* Is this true? */ b[x] == b

Definición de una identidad en este contexto: https://en.wikipedia.org/wiki/Identity_function

over 4 years ago · Santiago Trujillo
2 Respostas
Responde à pergunta

0

La operación de indexación no tiene un elemento de identidad. El dominio y el rango de indexación no son necesariamente los mismos: el dominio son los arreglos y los objetos, pero el rango es cualquier tipo de objeto, ya que los elementos del arreglo y las propiedades del objeto pueden contener cualquier tipo. Si tiene una matriz de enteros, el dominio es Array , mientras que el rango es Integer , por lo que no es posible que haya una identidad. a[x] siempre será un número entero, que nunca puede ser igual a la matriz en sí.

E incluso si tiene una matriz de matrices, no hay motivo para esperar que ninguno de los elementos sea una referencia a la matriz en sí. Es posible crear matrices autorreferenciales como esta, pero la mayoría no lo son. E incluso si lo es, la autorreferencia podría estar en cualquier índice, por lo que no hay un valor de identidad único.

over 4 years ago · Santiago Trujillo Relatório

0

No existe tal cosa incorporada, ya que rara vez hay una necesidad (y, a veces, incluso una necesidad contra ella). 0 Sin embargo, es posible rodar su propia clave de 'identidad':

 const self = Symbol('self'); Object.defineProperty(Object.prototype, self, { enumerable: false, get() { "use strict"; return this; } });

Esto funcionará en todas las primitivas (aparte de nulas e indefinidas) y la mayoría de los objetos de JavaScript: es decir, que no sean proxies o aquellos que eluden la cadena de prototipos habitual mediante, por ejemplo Object.create(null) . Cualquier objeto posterior en la cadena de prototipos también podrá deshabilitar la funcionalidad, por ejemplo, haciendo { [self]: void 0 } ; todas estas advertencias significan que x[self] === x de ninguna manera es una ley universal. Pero esto es probablemente lo mejor que puedes hacer.

Modificar Object.prototype generalmente se considera una mala idea, pero lo anterior logra evitar la mayor parte de su maldad: agregar la propiedad en una clave de símbolo (y hacer que también sea explícitamente no enumerable) evita que aparezca inesperadamente en iteraciones y búsquedas que recorren la cadena de prototipos, lo que ayuda a garantizar que no se vea afectado ningún código que no busque específicamente esta propiedad.


0 Incluso si existiera tal característica, no sería una buena solución para el caso de uso original del autor de la pregunta : una operación de 'cortar a 50 caracteres o tomar la cadena completa si es más corta' se puede expresar como s.description.substring(0, s.description.length > 50 ? 50 : void 0) (o de hecho solo s.description.substring(0, 50) ). No sería más fácil de expresar incluso con una función de este tipo: dependiendo de la condición, aún necesita invocar el método de subcadena, no solo buscarlo, sino no invocar el no método 'self'. Y dado que necesita agregar puntos suspensivos al final en el primer caso, aún tendría que realizar la verificación de condición fuera de la llamada de subcadena, lo que hace que cualquier abreviatura sea bastante ineficaz. Dicho todo esto, los trucos como los descritos en esta respuesta encuentran algún uso real .

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