我有一个看起来像这样的数组
var data=[["snp","3569#maspd"],["kpr","ant#$casd"]];
我想要做的是根据[1]元素的长度将此数据写入文件。
例如,让我们在数组中获取第一个元素(也是一个数组)
["snp","3569#maspd"]
[1]元素3569#maspd
长度为10个字符= length=10
,因此来自此数组的数据将写入文件“10.txt”
我为它写了一段代码
var result=cont.split("\n").
map(function(r){return r.split(",").slice(2,4);//.join(":")
}) //this creates array of arrays
result.forEach(function(x){
var length=x[1].length;
var str=length.toString();
var fil=length+".txt";
var txt=x.join(":");
fs.exists(fil,function(exist){
if(exist){
fs.appendFile(fil,txt,function(err){
if(err) console.log(err)
})
}
else{
fs.writeFile(fil,txt,function(err){
if(err) console.log(err)
})
}
})
}
)
但它总是抛出错误“无法读取未定义的属性长度”。当我删除所有代码并仅保留
时result.forEach(function(x){
var length=x[1].length;
var str=length.toString();
console.log(str)
}
)
它有效,我在这里忽略了一个错误吗? 这是结果数组的示例值(使用随机数据)
var result=[[ '62346asd5f5510dda8f6223c557bb0bf0b5',
'MH))WXlhs\'uOSu.iwJk[n}oz#w>T6L' ],
[ '00d7994173ds265bfe71182154a1143b0', '&Df1' ],
[ '1b6c32941719fcbfc76c6e5428e5f5',
'Fc/0PG#mHb49&#)V|$Swrr7as_*UnL~Y' ],
[ 'f931c2256eca136c97a9a9af4dcae', '.a=]' ]]
答案 0 :(得分:1)
您必须检查/清理输入并确保x
有2个项目。
执行此操作的基本方法可能是从
更改var length=x[1].length;
类似
var length= x[1] != undefined ? x[1].length : 0;
更好的方法是filter您可以对数据进行排列以确保其安全。
答案 1 :(得分:0)
我认为问题出在你的结果数组中。您很可能有不良数据或地图功能出现问题。使用您的示例数据运行下面的代码,它工作正常。您可以添加try catch来跳过它或将其注销,以便您可以看到导致问题的行。
{{1}}