在映射中返回对象时获取"TypeError: Cannot read property 'slice' of undefined"



我有一个大文本文件,我正在循环访问,所以我可以将其格式化为 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));
});

这有点更强大,但可能仍然不完美

相关内容

最新更新