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

261
Views
JavaScript indexOf (), incluye () comportamiento no comprensible

No encuentro explicación a lo siguiente. ¿Por qué está pasando esto?

 let mainArr = [ [1], [2] ] let subArr = [1] let result = mainArr.includes(subArr) *//output: false*

además

 let mainArr = [ [1], [2] ] let subArr = [1] let result = mainArr.indexOf(subArr) *//output: -1*

Este es mi código original:

 let mainArr = [ [ 'apple', 1 ], [ 'bat', 2 ], [ 'cookie', 2 ] ] let subArr = [ [ 'apple', 1 ] ] *//with let subArr = [ 'apple', 1 ] will be also -1* let result = mainArr.indexOf(subArr) *//output: -1*

no lo entiendo...

about 4 years ago · Juan Pablo Isaza
2 answers
Answer question

0

La matriz [1] que es el primer elemento de la variable mainArr , y la otra matriz [1] , que es el valor de la variable subArr , no son la misma matriz. Son dos matrices diferentes, ambas con 1 como único elemento. Es por eso que obtiene falso cuando llama a includes y obtiene -1 cuando llama a indexOf . Si desea que sea la misma matriz, puede hacer lo siguiente:

 let subArr = [1]; // create the [1] array and store a reference to it inside the subArr variable let mainArr = [subArr, [2]]; // assign the subArr variable as the first element of the mainArr array let result = mainArr.includes(subArr); // result is true
about 4 years ago · Juan Pablo Isaza Report

0

Las matrices se consideran Objects en javascript. Solo los tipos primitivos, como strings y integers , se pueden comparar por su valor en javascript. Desafortunadamente, los Objects se comparan por su referencia (también conocido como el lugar donde están almacenados en la memoria). -- Cada vez que se crea un objeto, se le da una referencia a un espacio donde se almacena en la memoria -- Entonces, aunque un objeto parezca idéntico, su referencia no lo es.

Para comparar ambos, tendría que atravesar una matriz y comparar cada valor con el índice correspondiente de la segunda matriz. Algo como:

 for (let i = 0; i < mainArr.length; i++){ if (mainArr[i] !== subArr[i]){ //not the same } else { continue }
about 4 years ago · Juan Pablo Isaza 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!