#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]);