如何使用Javascript正确拆分CSV



我的csv文件是

1234567,AB,Client,S12345J,111 ABCD ABCEDE ADDRESS
1234567,BC,Client,S12345J,111 ABCD ABCEDE ADDRESS
1234567,CD,Client,S12345J,11 ABCD ABCEDE ADDRESS
1234567,DF,Client,S12345J,856 ABCD ABCEDE ADDRESS

我在CSV上使用拆分时遇到问题。。。。我使用的regex命令是/(.?,.?(,.*/

if (typeof (FileReader) != "undefined") { 
var Allvalues = new FileReader();
Allvalues.readAsText($("#fileUpload")[0].files[0]);
Allvalues.onload = (f) => {
this.splitted = f.target.result.split(/(.*?,.*?),.*/);
}

我期待着一个阵列

["1234567,AB","1234567,BC"]

0[] = "1234567,AB"
1[] = "1234567,BC"

但是我得到

["", "1234567,AB", " ","1234567,BC",...]

0[] = ""
1[] = "1234567,AB"
2[] = ""
4[] = "1234567,BC"

有人能帮忙纠正吗…提前谢谢

如果像"111, ABCD ABCEDE, ADDRESS"这样的数据中没有逗号

然后你可以对逗号进行拆分和销毁,并进行reduce以获得唯一值

const csv = `1234567,AB,Client,S12345J,111 ABCD ABCEDE ADDRESS
1234567,BC,Client,S12345J,111 ABCD ABCEDE ADDRESS
1234567,AB,Client,S12345J,11 ABCD ABCEDE ADDRESS
1234567,DF,Client,S12345J,856 ABCD ABCEDE ADDRESS`
const res = csv.split(/n/).reduce((acc,line) => {
const [a,b,c,d,e] = line.split(/,/)
if (!acc.find(arr => arr[0] === a && arr[1] === b)) acc.push([a, b])
return acc
},[])
console.log(res)

较旧的JS

var csv = "1234567,AB,Client,S12345J,111 ABCD ABCEDE ADDRESSn1234567,BC,Client,S12345J,111 ABCD ABCEDE ADDRESSn1234567,AB,Client,S12345J,11 ABCD ABCEDE ADDRESSn1234567,DF,Client,S12345J,856 ABCD ABCEDE ADDRESS";
var lines = csv.split(/n/)
var res = []
for (var i=0;i<lines.length;i++) {
var arr = lines[i].split(/,/);
var found = false
for (var j=0;j<res.length; j++) {
if (res[j][0] === arr[0] && res[j][1] === arr[1]) {
found = true;
break;
}
}
if (!found) res.push([arr[0], arr[1]])
}
console.log(res)

最新更新