Я писал чат-бот для сайта, и работаю над командой, которая дает (не существующую, фальшивую) валюту для бота, чтобы купить забавные элементы, и я использую объекты LocalStorage и JSON для этого.
if (localStorage.balances == undefined) {
localStorage.setItem('balances', '{"ffdbddfaae": "0"}') // initialize balance so JSON doesn't error out
}
let balances = JSON.parse(localStorage.balances) // convert string to JSON object for further changes
let addToBalance = function(value, id) {
if (id.replace(/[0-9]/g, '') in balances) { // convert alphaumerical id string to only letters to not cause errors when using balances.(id) and check if id exists in balance object
Object.defineProperty(balances, id.replace(/[0-9]/g, ''), {
value: parseInt(balances[id]) + value // add value to balance
})
localStorage.setItem("balances", JSON.stringify(balances))
} else {
Object.defineProperty(balances, id.replace(/[0-9]/g, ''), {
value: value
})
localStorage.setItem("balances", JSON.stringify(balances))
}
}
addToBalance(100, "ffdbddfaae")
addToBalance(69, "foobarid")
< /code>
Код должен работать в теории, но это не так.
Вот как я проанализировал код. < /p>
[list]
[*] Попробуйте изолированный код в изолированной среде < /li>
Проверьте локальный storage.balances < /code> < /li>
< /br /> < /br /> < /br /> < /br /> . Проблема
[/list]
Таким образом, при рассечении этой проблемы я обнаружил, что, когда json.stringify ()
infable balances переменная (не путать с localstorage.balances ), вместо того, чтобы быть '{"ffdbddfaae. '{"ffdbddfaae": 0}' , aka первое значение, которое LocalStorage.balance была установлена, так что, на практике, LocalStorage.Balance изменился на свою собственную ценность, не создавая никаких эффектов.>
Я писал чат-бот для сайта, и работаю над командой, которая дает (не существующую, фальшивую) валюту для бота, чтобы купить забавные элементы, и я использую объекты LocalStorage и JSON для этого.[code]if (localStorage.balances == undefined) { localStorage.setItem('balances', '{"ffdbddfaae": "0"}') // initialize balance so JSON doesn't error out } let balances = JSON.parse(localStorage.balances) // convert string to JSON object for further changes
let addToBalance = function(value, id) { if (id.replace(/[0-9]/g, '') in balances) { // convert alphaumerical id string to only letters to not cause errors when using balances.(id) and check if id exists in balance object Object.defineProperty(balances, id.replace(/[0-9]/g, ''), { value: parseInt(balances[id]) + value // add value to balance }) localStorage.setItem("balances", JSON.stringify(balances)) } else { Object.defineProperty(balances, id.replace(/[0-9]/g, ''), { value: value }) localStorage.setItem("balances", JSON.stringify(balances)) } } addToBalance(100, "ffdbddfaae") addToBalance(69, "foobarid") < /code> Код должен работать в теории, но это не так. Вот как я проанализировал код. < /p> [list] [*] Попробуйте изолированный код в изолированной среде < /li> Проверьте локальный storage.balances < /code> < /li> < /br /> < /br /> < /br /> < /br /> . Проблема [/list] Таким образом, при рассечении этой проблемы я обнаружил, что, когда json.stringify () [/code] infable balances переменная (не путать с localstorage.balances ), вместо того, чтобы быть '{"ffdbddfaae. '{"ffdbddfaae": 0}' , aka первое значение, которое LocalStorage.balance была установлена, так что, на практике, LocalStorage.Balance изменился на свою собственную ценность, не создавая никаких эффектов.>