Console.log (values) возвращает «[object Object]» вместо записи массива.

Это мой код:

let values = {
    "coins": 0,
    "griffinFeathers": 0,
    "souvenir": 0,
    "cogs": 0,
    "cats": 0,
    "golems": 0,
    "champions": 0,
    "minotaurs": 0,
    "inquisitors": 0
}

JSON.stringify(FileLib.write("MinotaurLoot", "values.json", values));
function thing() {
    fileThing = JSON.stringify(FileLib.read("MinotaurLoot", "values.json"));
    if (griffin_thing_idk) fileThing.griffin++;    
}

console.log(values) // [object Object]
0
Lawnmoers The Epic Gamer 14 Окт 2020 в 07:14

1 ответ

Лучший ответ

Смотря на:

JSON.stringify(FileLib.write("MinotaurLoot", "values.json", values));

JSON.stringify() должен либо быть удален, поскольку вы нигде не сохраняете возвращенную строковую версию своего объекта либо выполните что-то вроде:

const stringifiedValues = 
    JSON.stringify(FileLib.write("MinotaurLoot", "values.json", values));

//Now you should be able to console.log without getting [object Object]
console.log(stringifiedValues);

Причина, по которой вы получаете [object Object], заключается в том, что реализация console.log() в JavaScript по умолчанию не обеспечивает корректной обработки объектов JavaScript, поскольку они являются «более сложной» структурой данных, чем такие примитивы, как String или Число.

Как указано @coderpc в комментарии к вашему вопросу, вы можете получить доступ к внутреннему содержимому объекта с помощью метода JSON.stringify() перед его заключением в оператор console.log.

Сообщите нам, если это сработает.

2
10110 29 Ноя 2020 в 08:38