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

Node.js - Using template literals outside of strings

我正在逐行读取文件并将每一行分配给一个键控数组。我的文件每一行都以它们的键开头(例如 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} 是无效语法,我希望这里有人对我将如何实现我想要的东西有一些见解。

提前致谢!

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

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

// 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

这样可以吗?

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

虽然有一件事,你正在与 = 分开,但与 (space 字符)合并,但这也许是故意的。