Open nunnly opened 9 years ago
function csvColumns(csv, indices){
var results = [];
// 得到csv转换的数组
var csvArr = csv.split('\n').map(function (v,k) {return v.split(',') });
// 循环push每个 符合indices索引 的值到results
csvArr.forEach(function (v, k) {
var _temp = [];
indices.forEach(function (v1) {
v[v1] && _temp.push(v[v1]);
});
_temp.length && results.push(_temp);
});
return results.join('\\n');
}
// 测试用例
console.log(csvColumns( "1,2,3\n4,5,6" , [0, 1] )) // returns "1,2\n4,5"
console.log(csvColumns( "1,2\n3,4\n5,6" , [5, 6, 7] )) // returns ""
console.log(csvColumns( "a,b,c,d,e\n1,2,3,4,5\nf,g,h,i,j" , [1, 3, 5, 7] )) // returns "b,d\n2,4\ng,i"
有没有更好的方式呢?
function csvColumns(csv, indices){
var result = "",
rawArr = csv.split("\n"),
l = rawArr.length-1;
rawArr.forEach(function(item,index){
var temp, s="";
indices.forEach(function(i){
temp = item.substr(2*i,1);
if(temp){ result+= s+temp;s=","}
})
result+= (index==l?"":"\\n");
})
return result==="\\n\\n"?"":result;
}
写一个csvColumns函数,传入一个类似CSV(如下所示格式)的数组,和索引,数组代表该CSV的列和行,并返回该索引所对应数组中指定的列。