我有一个大文本文件,我正在循环访问,所以我可以将其格式化为 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('nn');
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
لقی: هونەر
كوردی: دەپێكی سازكرد
وردەكاری: (دەپێك)ی سازكرد
如果文件末尾有nn
,请添加一个过滤器以删除最后一个无效的"块">
此外,如果文件中的某处有nnn
或更多内容,您可能也想修复它
var fs = require('fs');
let words;
fs.readFile('dictionary.txt', "utf-8", function(error, contents) {
if(error) throw error;
// in case there's nnn
words = contents.replace(/n{3,}/g, 'nn').split('nn');
words = words.map(value => value.split('n'))
// filter out last block if file ends in nn
.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));
});
这有点更强大,但可能仍然不完美