Node.js-在字符串之外使用模板文字

时间:2019-07-13 00:51:48

标签: javascript node.js template-literals

我正在从文件中逐行读取并将每一行分配给一个键控数组。我的文件的每一行都以其键开头(例如name =,text =)。 我想将每一行分配给一个数组,而不必手动键入每个键。

示例:

rd.on('line', function(line) {
   line = line.split('=');
   let key = line[0];
   line.shift();
   line = line.join(' ');
   array.name = line;
   // ... Next loop
   line = line.split('=');
   let key = line[0];
   line.shift();
   line = line.join(' ');
   array.text = line;
});

不是我想要的

据我所知,模板文字仅在`'d字符串(console.log(${key}))中可用,尽管我希望有某种解决方法,但我无法通过搜索找到。

我要工作的代码在这里:

rd.on('line', function(line) {
   line = line.split('=');
   let key = line[0];
   line.shift();
   line = line.join(' ');
   array.${key} = line;
});

我知道array.${key}是无效的语法,我希望这里的人对我将如何实现自己想要的东西有所了解。

谢谢!

3 个答案:

答案 0 :(得分:1)

使用array[key],其中array is actually a dictionary

答案 1 :(得分:1)

如果我对问题的理解正确,那么您想使用对象而不是数组来存储基于特定键的行。

// initiate the Object
let lines = {};

rd.on('line', function(line) {
   line = line.split('=');
   let key = line[0];
   line.shift();
   line = line.join(' ');

   lines[key] = line;
});

您可以在此处阅读有关对象基础的更多信息: https://developer.mozilla.org/en-US/docs/Web/JavaScript/Guide/Working_with_Objects

答案 2 :(得分:1)

这会吗?

const data = {}; // I found name `array` confusing
rd.on('line', function(line) {
   const [key, ...rest] = line.split('=');
   data[key] = rest.join(' ');
});

尽管有一件事,您正在与=分裂,但与(空格字符)加入,但这也许是有意的。