#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
класс методы для возврата отформатированных номеров лун и размеров.