我正在从文件中逐行读取并将每一行分配给一个键控数组。我的文件的每一行都以其键开头(例如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}
是无效的语法,我希望这里的人对我将如何实现自己想要的东西有所了解。
谢谢!
答案 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(' ');
});
尽管有一件事,您正在与=
分裂,但与(空格字符)加入,但这也许是有意的。