Использовать строку для чтения переменной файла конфигурации
У меня есть файл конфигурации (leaderboard.json), который выглядит следующим образом:
{
"usercount<@386679122614681600>": 0
}
Я пытаюсь прочитать значение этой переменной (так было бы 0) в моем файле index.js, который выглядит следующим образом:
var LEADERBOARD = require('./leaderboard.json');
const usercount = 'usercount'+user
var countvalue = LEADERBOARD.usercount
console.log(countvalue)
По сути, я хочу, чтобы countvalue возвращала 0, но я не могу просто использовать LEADERBOARD.usercount<@ 386679122614681600>, так как это имя будет меняться.
По сути, мне интересно, есть ли обходной путь, где я могу прочитать переменную моего файла конфигурации, используя строку, которую я создаю.
4 ответа
Для этого вам нужно использовать скобочные обозначения.
var countvalue = LEADERBOARD[usercount]
Вот пример:
const foo = {
bar123: 'baz'
}
const prop = 'bar' + 123
console.log(foo[prop])
Этот ответ поможет вам, если вы знаете, что у вас есть доступ только к первому элементу! Больше информации об этом нет, поэтому я предполагаю, что это потенциальный ответ:
Вы можете использовать Object.keys, чтобы поместить значение в формат массива, а затем получить доступ к первому значению с помощью [0], и оно вернет значение 0.
var obj = {
"usercount<@386679122614681600>": 0
}
var countvalue = obj[Object.keys(obj)[0]];
console.log(countvalue)
Я действительно надеюсь, что это поможет. Пожалуйста, дайте мне знать, если это не было вашим требованием.
Использование []
нотации.
потому что для .
свойство нотации должно быть действительным идентификатором JS.
Свойство должно быть допустимым идентификатором JavaScript, т. е. последовательностью буквенно-цифровых символов, включая знак подчеркивания ("_") и знак доллара ("$"), которые не могут начинаться с цифры. Например, object.$1 допустим, а object.1 - нет.
let obj = {
"usercount<@386679122614681600>": 0
}
const count = `386679122614681600`;
const useCount = `usercount<@${count}>`;
console.log(obj[useCount])
Используя созданную вами строку, вы можете вернуть значение учетной записи пользователя.
const LEADERBOARD = {
"usercount<@386679122614681600>": 0
}
// String you create
const userId = '386679122614681600'
const userCount = `usercount<@${userId}>`
console.log(LEADERBOARD[userCount]) // 0