Porque los corchetes []?

No soy capaz de entender porque alpha[value]; tiene que tener la variable value entre corchetes .
El punto es, que igual me falta una regla por aprender sobre los corchetes, que seria, que también sirven para nombrar variables cuando trato con objetos?
O lo usa porque en realidad, a traves de la variable accede a una propiedad del objeto?
A ver si me podéis guiar.
Gracias

var alpha = {
  1:"Z",
  2:"Y",
  3:"X",
  4:"W",
  ...
  24:"C",
  25:"B",
  26:"A"
};
alpha[2];
alpha[24];

var value = 2;
alpha[value];

Desafío: Usa objetos para hacer búsquedas

Enlaza al desafío:

I’m never sure what to say to this sort of question. That’s just the syntax that was chosen when JavaScript was designed. When you want to access a property of an object and the name of the property you want is stored in a variable, you have to use bracket notation.

1 Like

Ah vale, solo, simplemente, es una regla más que tenia que aprenderme. Pues gracias

Esta es la razón. En JavaScript, los corchetes se usan en dos casos:

  1. Para acceder a los valores de un arreglo. En este caso, lo que va dentro de los corchetes es el índice del elemento. Por ejemplo: const arreglo = ['a', 'b', 'c']:
// Si quisieras acceder al primer elemento, 'a', escribirías:

const letraA = arreglo[0]

// Para acceder al segundo
const letraB = arreglo[1]

// Para acceder al tercer elemento, 'c'
const letraC = arreglo[2]

// Y así sucesivamente.
  1. El segundo caso de uso es para acceder a las propiedades de un objeto, como bien dices. En tu ejemplo (el código del ejercicio), value debe ir entre los corchetes porque hace referencia al valor de una variable. Como norma, siempre que necesites acceder a la propiedad de un objeto cuyo nombre está guardado en una variable se deben usar corchetes, de lo contrario es un error.

También debes utilizar los corchetes para acceder a la propiedad de un objeto que no esté normalizada. Esto es, si la propiedad tiene caracteres especiales como espacios u otros, debes usar los corchetes:

const obj = {
   'propiedad-uno': 'el valor',
   'La casa Embrujada': 'no me asusta'
}

// Esto está bien:
console.log(obj['propiedad-uno']);
console.log(obj['La casa Embrujada']);

// Esto no funciona:
console.log(obj.propiedad-uno); // ReferenceError
console.log(obj.La casa Embrujada); // A simple vista esto está mal

Espero que sirva la explicación :slight_smile:.

3 Likes

Alvaro, como va? creo que la explicación de skaparate está muy clara.

Pero agrego un concepto más que a mí me ayudó a entender el uso de corchetes.

En un array, para acceder al valor de un índice utilizo la notación de corchetes.

const myarray = ["lunes", "martes", "miércoles",];
let dia1  =  myarray[0]; // aquí accedo a  lunes

En un objeto, los índices no existen, en su lugar (podría decirse así), existen las propiedades.

const myObject = {
dia1: "lunes",
2: "martes",
dia3: "miércoles",
}
let diaUno = myObject["dia1"]; // aquí accedo a lunes
let diaDos = myObject[2]; // aquí accedo a martes

Entonces, para acceder a los valores de un array utilizo la notación de corchetes indicando el índice, y para acceder a los valores de un objeto, la notación de corchetes también, pero indicando su propiedad, entre comillas en caso que la propiedad sea un string.

Espero haberte ayudado.

Happy coding :slightly_smiling_face:

2 Likes

Brutal! Agradezco mucho esto. Ponerme el el ordenador otro día más para aprender a programar y encontrarme con ésta gran comunidad de FCC
Muchas gracias, me ha ayudado a entender mejor todo.
Veo que JavaScript ya es más complicado que HTML5 y CSS3 y cuesta, pero gracias a vosotros se sigue mejor!

2 Likes

Muchas gracias también dariofinelli, completo mis apuntes con los datos que me faltaban por aprender sobre corchetes y sigo con JS!
Happy coding :smiley:

1 Like