Нет никакого способа сделать это в Javascript (да и вообще в большинстве языков).
То, что вы просите, является своего рода отражением .Концептуально, функция nameOfVariable
, которая принимает переменную и возвращает вам ее строковое имя в ответ:
nameOfVariable(one): 'one'
Невозможно.
Ответы выше являются попытками обойти это.В конечном счете, в реальном коде это будет структурировано не как мешок переменных, а как объект (который похож на мешок переменных, за исключением того, что вы можете восстановить имена)
const strings = {
one: 'abcde',
two: 'abcdef',
three: 'abcd',
};
// Return key in object corresponding to longest string,
// or null if object is empty.
const longest_string = strings => {
let max = null;
for (let name in strings) {
if (max === null || strings[name].length > strings[max].length) {
max = name;
}
}
return max;
}
console.log(longest_string(strings));