Javascript 根据特定列对csv进行排序
嗨,我正在使用javascript将数据导出到csv文件。我需要根据特定的列索引对数据进行排序 代码: 例如:Javascript 根据特定列对csv进行排序,javascript,sorting,csv,Javascript,Sorting,Csv,嗨,我正在使用javascript将数据导出到csv文件。我需要根据特定的列索引对数据进行排序 代码: 例如:csvData.sort()是按照默认的第一列对数据进行排序。我想按第三列排序,即按d[index]排序。 我尝试了这个csvData.sort(sort_by(d[index])并且它不工作 我还有一个问题。因为我正在将数据导出到csv。现在,如果我有三个值,如d[index]=“cat,dog,bat”,则从服务器进入d[index]。它将显示在3个相邻的列中。我想把它放在同一列。我
csvData.sort()
是按照默认的第一列对数据进行排序。我想按第三列排序,即按d[index]
排序。
我尝试了这个csvData.sort(sort_by(d[index])代码>并且它不工作
我还有一个问题。因为我正在将数据导出到csv。现在,如果我有三个值,如d[index]=“cat,dog,bat”
,则从服务器进入d[index]
。它将显示在3个相邻的列中。我想把它放在同一列。我可以把分隔符从逗号改成别的吗
代码:
您必须编写一个自定义的compare
函数
// The following function is used to sort on the basis of the third element
function compareByThird(a, b) {
var aArr = a.split(',');
var bArr = b.split(',');
return aArr[2] - bArr[2];
}
csvData.sort(compareByThird);
如果第三列是数值,则该选项有效。
如果不是(例如字符串),则需要使用以下代码:
// The following function is used to sort on the basis of the third element
function compareByThird(a, b) {
var aArr = a.split(',');
var bArr = b.split(',');
if (aArr[2] < bArr[2]) {
return -1;
} else if (aArr[2] > bArr[2] {
return 1;
} else {
return 0;
}
}
//以下函数用于根据第三个元素进行排序
函数比较器比特(a,b){
var aArr=a.split(',');
var-bArr=b.split(',');
if(aArr[2]bArr[2]{
返回1;
}否则{
返回0;
}
}
在将数据写入CSV之前,您需要对数据进行排序。如果数据位于对象数组中,而不是分散在每个属性的一个数组中,则更容易做到这一点。要实现这一点,您可以在创建或读取数据时将数据放入对象中,也可以使用如下代码段进行转换:
var count = x.length;
var objects = new Array(count);
for(i=0; i++; i<count) {
objects[i] = {
x: x[i],
y: y[i],
d: d[i],
z: z[i],
a: a[i],
e: e[i],
b: b[i],
c: c[i],
};
}
然后您将对数组进行排序,并可以访问单个属性,例如对象[i].x
大家好,谢谢你们的输入。@Davide-您能告诉我比较函数中的a和b是什么吗?它是第一列和第二列吗?基本上是在我的结构x[index]中是第一列,它将有n个值。类似地,Y[index]是第二列,在csv文件中有值等。现在,如果我只键入csv.sort(),第一列值将被排序,其余列值将相应地填充。如果我需要根据任何其他列对其排序,例如:Y[index]我该怎么办?到目前为止,在我们任何人发布的代码中,没有任何名称CSV
,因此我不可能理解您在说什么。我提供的解决方案根据您选择的列进行排序-如果您不想要x
,只需在比较函数中将代码更改为其他内容即可de>a
和b
变量是两个不同的行,通过sort
作为输入发送到compare
,compare
应返回1
如果a
应被视为大于b
,-1
如果情况相反,如果它们相等,则根据。
// The following function is used to sort on the basis of the third element
function compareByThird(a, b) {
var aArr = a.split(',');
var bArr = b.split(',');
if (aArr[2] < bArr[2]) {
return -1;
} else if (aArr[2] > bArr[2] {
return 1;
} else {
return 0;
}
}
var count = x.length;
var objects = new Array(count);
for(i=0; i++; i<count) {
objects[i] = {
x: x[i],
y: y[i],
d: d[i],
z: z[i],
a: a[i],
e: e[i],
b: b[i],
c: c[i],
};
}
function compare(a, b) {
if (a.x < b.x) return -1;
if (a.x > b.x) return 1;
return 0;
}
objects.sort(compare);