您好我正在使用javascript将数据导出到csv文件。我需要根据特定的列索引对数据进行排序。
代码:
$.each(exportArray, function (index, value) {
csvData.push(x[index] + "," + y[index] + "," + d[index] + "," + z[index] + ","+ a[index] + "," + e[index] + "," + b[index] + "," + c[index]);
});
csvData.sort();
csvData = 'data:application/csv;charset=utf-8,' + encodeURIComponent(output);
$(this)
.attr({
'download': filename,
'href': csvData,
'target': '_blank'
});
例如:csvData.sort()
根据第一列默认排序数据。我希望按照第三列排序,即d[index]
。
我试过这个csvData.sort(sort_by(d[index]));
并且它无效。
我还有一个问题。因为我将数据导出到csv。如果我有三个值d[index]
,请从服务器d[index]="cat,dog,bat"
开始。它将显示在3个相邻的列中。我希望它在同一列中。我可以用逗号将分隔符更改为其他内容。
代码:
csvData.push(x[index] + "," + y[index] + "," + d[index] + "," + z[index] + ","+ a[index] + "," + e[index] + "," + b[index] + "," + c[index]);
答案 0 :(得分:0)
您必须编写自定义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;
}
}
答案 1 :(得分:0)
在将数据写入CSV之前,您需要对数据进行排序。如果数据在对象数组中而不是在每个属性的一个数组中展开,则更容易实现。要实现此目的,您可以在创建或读取数据时将数据放入对象中,也可以使用以下代码段对其进行转换:
x
然后您可以使用以下代码轻松地对数据进行排序,例如function compare(a, b) {
if (a.x < b.x) return -1;
if (a.x > b.x) return 1;
return 0;
}
objects.sort(compare);
属性:
objects[i].x
然后,您将对数组进行排序,并可以使用例如sheet.Range[sheet.Cells[1,1], sheet.Cells[40,40]].Value = result;
来访问各个属性。