一直在试图通过将数据集全部放入文本文件来管理数据集,而不是将其放入JS本身(到最后,文本文件将长达数百行),但我似乎无法让数组按我需要的方式填充。
最后,我需要一个如下所示的数组:
var names = [
{
"name": "john",
"tag": ["tall","blue eyes","ginger","fast"],
},
{
"name": "morgan",
"tag": ["stout","blue eyes","dark"],
},
{
"name": "ryan",
"tag": ["average","brown eyes","fast","strong","perceptive"]
}
]填充像这样格式化的文本文件中的所有名称和标记(或者类似的格式,如果有更好的格式的话):
john: tall ,blue eyes, ginger, fast
morgan: stout, blue eyes, dark
ryan: average, brown eyes, fast, strong, perceptive到目前为止,我已经在这里和其他地方搜索过了。大部分时间都在为标签的排列而挣扎。目前它正以字符串的形式吐出来,但我不太确定如何分解它。
const { readFile, promises: fsPromises } = require('fs');
readFile('NAMES.txt', 'utf-8', (err, data) => {
if (err) throw err;
var name = data.split(/\r?\n/), result = [], anotherarray = [];
name.forEach((pair) => {
if (pair !== '') {
let splitpair = pair.split(': ');
let key = splitpair[0].charAt(0).toLowerCase() + splitpair[0].slice(1);
result[key] = splitpair[1];
}
});
for (var i in result) anotherarray.push({ "name": i, "tag": result[i] });
console.log(anotherarray);
});任何帮助或指向正确的方向将不胜感激!
发布于 2022-10-20 20:21:29
您可以使用readline节点模块逐行读取文件并进行处理。
我认为最简单的处理方法是在两个阶段:
按名称和:
,拆分的标记和按,拆分的建议修剪的空格,这样您就可以处理多个空格的情况
注意:我也添加了小写,因为你的例子。
示例:
const readline = require("readline");
const fs = require("fs");
// Create the interface to read the file line by line
const file = readline.createInterface({
input: fs.createReadStream('text.txt'),
});
// answer
const names = [];
// Process file line by line
file.addListener("line", (line) => {
// Split name and tags
const [name, tags] = line.split(":");
// Insert the name with parsed tags
names.push({
name,
tag: tags.split(",").map((e) => e.trim(). toLowerCase()),
})
});
// Log answer
file.addListener("close", () => {
console.log(names);
});产出:
[
{ name: 'john', tag: [ 'tall', 'blue eyes', 'ginger', 'fast' ] },
{ name: 'morgan', tag: [ 'stout', 'blue eyes', 'dark' ] },
{
name: 'ryan',
tag: [ 'average', 'brown eyes', 'fast', 'strong', 'perceptive' ]
}
]https://stackoverflow.com/questions/74144599
复制相似问题