Как вы печатаете имена переменных внутри массива?

#javascript #arrays #sorting #object

#javascript #массивы #сортировка #объект

Вопрос:

Я создал массив и поместил в него некоторые переменные, и я хочу получить имя переменной, используя номер индекса.

 var a = 0;
var b = 0;
var c = 0;

var letters = [a,b,c]

console.log(letters)
 

Я хочу, чтобы он выводил «[a, b, c]», но этот код фактически выводит «[0, 0, 0]»

Для большего контекста я планирую взять значения a, b и c, а затем отсортировать их на основе их значений, но тогда я все равно хочу иметь возможность видеть их имена переменных в новом порядке после их сортировки.

Комментарии:

1. Почему имена переменных важны для вас?

Ответ №1:

Вместо этого вы можете использовать объект, вы можете получить ключи в виде массива, используя Object.keys , а затем отсортировать их

 const obj = {
  a: 0,
  b: 2,
  c: 1
};
console.log(Object.keys(obj));

//sort keys based on values

const sorted = Object.keys(obj).sort((a,b)=> obj[a]-obj[b])

console.log(sorted) 

Ответ №2:

Вместо этого используйте объект, индексируемый именами этих переменных, а затем вы можете взять этот объект Object.keys , который даст вам массив свойств:

 const obj = {
  a: 0,
  b: 0,
  c: 0
};
console.log(Object.keys(obj)); 

Я хочу получить имя переменной, используя номер индекса.

Доступ к этому индексу в Object.keys массиве, например Object.keys(obj)[1] , будет оцениваться b .

Для сортировки возьмите Object.entries значение объекта (которое даст вам одновременно ключ и значение):

 const obj = {
  a: 0,
  b: 2,
  c: 1
};
console.log(
  Object.entries(obj)
    .sort((a, b) => a[1] - b[1])
); 

Комментарии:

1. Спасибо, но смогу ли я сортировать значения как объект?

2. Отсортируйте записи, и вы получите отсортированный массив массивов, где первый элемент во вложенном массиве является ключом, а второй элемент — значением

3. @CertainPerformance — может быть, немного не по теме, но зачем использовать const здесь?

4. @billynoah поскольку мы не изменяем значения переменной, поэтому лучше использовать const

5. @billynoah const предпочтительнее var , потому const что имеет область действия блока и обычно ведет себя гораздо более интуитивно, и const предпочтительнее let , потому let что предупреждает читателей кода о том, что вы можете позже переназначить переменную, что требует немного больше когнитивных затрат. const должно использоваться по умолчанию почти для всех объявлений переменных, по крайней мере, в серьезном коде (используйте Babel для переноса на ES5 позже, если это необходимо)

Ответ №3:

Вы не можете сделать это с помощью массива — вам придется использовать объект. Вы можете получить ключи с Object.keys помощью , а значения с Object.values :

 var a = 0;
var b = 0;
var c = 0;
var letters = {a, b, c};

console.log(Object.keys(letters));
console.log(Object.values(letters)); 
 .as-console-wrapper { max-height: 100% !important; top: auto; } 

Ответ №4:

Это может решить вашу проблему:

 var variableName = 0;
console.log(Object.keys({
  variableName
})[0]);