Преобразование типов данных — Javascript

#javascript #string #class #object #data-conversion

#javascript #строка #класс #объект #преобразование данных

Вопрос:

Я не понимаю, как я могу реализовать преобразование различных типов данных в моем коде ниже. Преобразование включает в себя (int в string, string в int, float в int и т. Д.) Мой учитель сказал, что это можно легко сделать, когда я читаю / записываю файлы, но я все еще в замешательстве. Я был бы признателен за любую помощь или предложения, спасибо! Вот мой код:

 //files
var fs = require("fs");
//reading files
fs.readFile('sources.txt', (err, data) => {
  console.log("File output: "   data.toString());
  //writing files
      fs.writeFile('written.txt',data,(err, result) => {
        if(err) console.log('error', err);
      });
}); 

// planet class
class Planet{
    constructor(name, numberOfMoons, size) {
        this.name = name;
        this.numberOfMoons = numberOfMoons;
        this.size = size;
    }
    orbit(){
        //return value
        return `${this.name} is a planet and therefore orbits around the sun.`
    }
}

//inheritance class
class DwarfPlanet extends Planet{
    constructor(name, numberOfMoons, size, orbitalNeighbourhood) {
        super(name, numberOfMoons, size);
        this.orbital = orbitalNeighbourhood;
    }

    getOrbital(){
        //return value
        return `${this.name} is a dwarf planet because it doesn't have a clear orbital neighnourhood "`
    }

}

let earth = new Planet('Earth', 1 , 6371);
console.log(earth.orbit());

let pluto = new DwarfPlanet("Pluto", 5 , 1188, 'Kuiper Belt');
console.log(pluto.getOrbital());

//Array of Objects (anonymous option)
var stars = [
    {
        name: 'Sun',
        temperature: 5778,
        colour: 'White'
    },
    {
        name: 'Pistol',
        temperature: 11800,
        colour: 'Blue'
    },
    {
        name: "Antares",
        temperature: 3500,
        colour: "Red"
    }
];

// Array of Objects (using Planet Class)

var planets = [
  new Planet('Earth', 'One moon', '6,371 km'),
  new Planet('Mars', 'Two mooons', '3,389 km'),
  new Planet('Uranus', 'Twenty-seven moons', '25,362 km'),
  new Planet('Saturn', 'Fifty-three moons', '58,232 km'),
];


console.log("Fun Fact: the biggest star isn't the sun, instead it is a blue star called 'Pistol'. Here's some information about it: ");
console.log(stars[1]);

console.log('Here are some planets and their properties:');
console.log(planets);
  

Комментарии:

1. Начните здесь: JSON.stringify

2. Я никогда по-настоящему не изучал JSON, но я проверю это, я больше просто запутался в том, как я могу конвертировать данные, как в моем коде, что я мог бы добавить, что связано с преобразованием данных? @RandyCasburn

3. Ответ находится на странице, на которую я ссылался. Вы даже не посмотрели на содержимое ссылки. Не могу вам помочь, если вы сами себе не поможете.

4. Ваш учитель дает вам исходный файл или вам нужно создать его самостоятельно?

5. Я проверил ссылку, но я действительно не понял ее

Ответ №1:

Самый простой способ чтения и записи файлов — использовать их синхронные аналоги: readFileSync() и writeFileSync() . Чтобы аккуратно работать с JSON, вы можете определить свои функции как:

 const filePath = 'planets.json';

function readPlanets() {
    const json = fs.readFileSync(filePath);
    const planets = JSON.parse(json);

    return planets.map(planet => new Planet(
        planet.name,
        planet.numberOfMoons,
        planet.size
    ));
}

function writePlanets(planets) {
    const json = JSON.stringify(planets, null, 4);

    fs.writeFileSync(filePath, json);
}
  

Затем вы можете заполнить свой planets.json файл:

 const planets = [
    new Planet('Earth', 1, 6371),
    new Planet('Mars', 2, 3389),
    new Planet('Uranus', 27, 25362),
    new Planet('Saturn', 53, 58232),
];

writePlanets(planets);
  

Чтобы прочитать его обратно, вы используете readPlanets() функцию:

 const storedPlanets = readPlanets();
  

Обратите внимание, как я вручную map() передаю данные в Planet экземпляры readPlanets() . Сам JSON не имеет представления о классе — объекты, созданные с помощью JSON.parse() , являются базовыми объектами JavaScript.

Также обратите внимание, как я немного изменил формат ваших данных. Вместо того, чтобы использовать такие значения, как 'Twenty-seven moons' или '6,371 km' , я просто помещаю простое число в JSON: 27 и 6371 . Это потому, что вы обычно хотите сохранить свои данные как можно более необработанными, потому что формат отображения — это то, что вы можете захотеть изменить в любое время. Данные должны сохраняться. Если вы хотите перевести эти необработанные числа в свой формат, я бы предложил добавить в ваш Planet класс методы для возврата отформатированных номеров лун и размеров.