我正在遍历一个大文本文件,因此可以将其格式化为JSON格式,然后转储它,当我使用slice
来使字段以不同的位置开头时,它可以完美地工作,但是一旦我使用slice
,就会出现以下错误:
TypeError: Cannot read property 'slice' of undefined
。
这是当前代码:
var fs = require('fs');
let words;
fs.readFile('dictionary.txt', "utf-8", function(error, contents) {
if(error) throw error;
words = contents.split('\n\n');
words = words.map(value => value.split('\n'))
.map((column, index) => {
return {
id: index+1,
word: column[0].slice(10, -1),
translation: column[2].slice(7, -1),
description: column[3].slice(10, -1)
}
});
fs.writeFileSync('words.json', JSON.stringify(words));
});
请记住,当我使用console.log(column[0].slice(10, -1)
时,它可以正常工作,但是当我在返回的对象中使用它时,我会得到该错误,当我删除slice
函数时,代码也可以工作,但是那不是我想要的。
这是文本文件的示例:
English : To obliterate
لقی: هونەر
كوردی: خاپووركردن
وردەكاری: خاپووركردن
English : to one's credit
لقی: گشتی
كوردی: جێی شانازی بوون بۆ كەسێك
وردەكاری: جێی شانازی بوون بۆ كەسێك
English : To outline
لقی: هونەر
كوردی: كورتە نەخشەی كێشا
وردەكاری: كورتە نەخشەی كێشا
English : To paint without a model
لقی: هونەر
كوردی: وێنەكێشانی بێ مۆدێل
وردەكاری: وێنەكێشانی بێ مۆدێل
English : To paste again
لقی: هونەر
كوردی: سەرلەنوێ لكاندنەوە
وردەكاری: سەرلەنوێ لكاندنەوە
English : To patronize
لقی: هونەر
كوردی: چاودێری
وردەكاری: چاودێری (هونەرمەندێكی) كرد
English : To pick
لقی: هونەر
كوردی: پیككاری كرد
وردەكاری: پیككاری كرد (بەردەكەی تەختكرد)
English : To pick out by color
لقی: هونەر
كوردی: دیاریكردن بەدژایەتی ڕەنگ
وردەكاری: دیاریكردن بەدژایەتی ڕەنگ
English : To plane
لقی: هونەر
كوردی: دەپێكی سازكرد
وردەكاری: (دەپێك)ی سازكرد
答案 0 :(得分:1)
如果文件末尾有\n\n
,请添加过滤器以删除最后一个无效的“块”
此外,如果文件中某处有\n\n\n
或更多,您可能也要修复该问题
var fs = require('fs');
let words;
fs.readFile('dictionary.txt', "utf-8", function(error, contents) {
if(error) throw error;
// in case there's \n\n\n
words = contents.replace(/\n{3,}/g, '\n\n').split('\n\n');
words = words.map(value => value.split('\n'))
// filter out last block if file ends in \n\n
.filter(({length}) => length === 4)
.map((column, index) => {
return {
id: index+1,
word: column[0].slice(10, -1),
translation: column[2].slice(7, -1),
description: column[3].slice(10, -1)
}
});
fs.writeFileSync('words.json', JSON.stringify(words));
});
这有点健壮,但可能仍不完美