首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >从文本文件中填充嵌套数组

从文本文件中填充嵌套数组
EN

Stack Overflow用户
提问于 2022-10-20 18:20:41
回答 1查看 23关注 0票数 0

一直在试图通过将数据集全部放入文本文件来管理数据集,而不是将其放入JS本身(到最后,文本文件将长达数百行),但我似乎无法让数组按我需要的方式填充。

最后,我需要一个如下所示的数组:

代码语言:javascript
复制
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"]
  }
]

填充像这样格式化的文本文件中的所有名称和标记(或者类似的格式,如果有更好的格式的话):

代码语言:javascript
复制
john: tall ,blue eyes, ginger, fast
morgan: stout, blue eyes, dark
ryan: average, brown eyes, fast, strong, perceptive

到目前为止,我已经在这里和其他地方搜索过了。大部分时间都在为标签的排列而挣扎。目前它正以字符串的形式吐出来,但我不太确定如何分解它。

代码语言:javascript
复制
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);
});

任何帮助或指向正确的方向将不胜感激!

EN

回答 1

Stack Overflow用户

发布于 2022-10-20 20:21:29

您可以使用readline节点模块逐行读取文件并进行处理。

我认为最简单的处理方法是在两个阶段:

按名称和:

  • Split拆分的
  1. ,由,拆分的标记和按,拆分的建议修剪的空格,这样您就可以处理多个空格

的情况

注意:我也添加了小写,因为你的例子。

示例:

代码语言:javascript
复制
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);
});

产出:

代码语言:javascript
复制
[
  { name: 'john', tag: [ 'tall', 'blue eyes', 'ginger', 'fast' ] },
  { name: 'morgan', tag: [ 'stout', 'blue eyes', 'dark' ] },
  {
    name: 'ryan',
    tag: [ 'average', 'brown eyes', 'fast', 'strong', 'perceptive' ]
  }
]
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/74144599

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档