【问题标题】:Avoid sorting the json response data alphabetically on ajax call避免在 ajax 调用时按字母顺序对 json 响应数据进行排序
【发布时间】:2021-10-20 11:22:36
【问题描述】:

我正在创建一个实用程序来读取表格中的数据,点击下载按钮后,表格中的数据应该会导出到 csv 文件中。

目前,从服务器端获取数据的顺序符合预期。但是,在客户端的控制台中,数据会自动按字母顺序排序。因此,在 csv 中下载的数据也不符合预期的顺序。

例如。我在表格中有以下数据,我正在按照给定的顺序阅读这些数据:

表员工

Sr.No EmployeeID Name
1 12345 Abc

单击下载按钮后,我在浏览器的控制台中看到以下顺序

{
  EmployeeID:12345,
  Name:Abc,
  Sr.No:1
}

因此下载的 csv 文件中的数据如下所示

EmployeeID,Name,Sr.No
12345,Abc,1

我不想要这个排序顺序,而是应该如下所示

Sr.No,EmployeeId,Name
1,12345,Abc

函数 json2csv(objArray){

    var array = typeof objArray != 'object' ? JSON.parse(objArray) : objArray;
    var str = '';

    for (var i = 0; i < array.length; i++) {
        var line = '';
    for (var index in array[i]) {
         

        line += array[i][index] + ',';
    }
        line = line.slice(0,-1)
    str += line + '\r\n';
}

return str;
}

【问题讨论】:

  • 这并不是真正的排序,因为只有一条记录;它是属性的排序。您使用什么将对象转换为 CSV 文件?那应该有一个选项来订购你想要的东西。
  • 这里我只展示了一条记录。表中有 100 多条记录。我正在使用 javascript 将 json 转换为 csv。我使用了下面的代码。函数 json2(objArray) {var array=
  • 你不能让输出代码呈现顺序吗?生成 CSV 的代码在哪里?不保证对象的顺序。
  • 主问题中添加的代码
  • @epascarello 您能否建议如何在上述代码中呈现订单

标签: javascript arrays json ajax sorting


【解决方案1】:

我会存储你想要的 CSV 列的顺序,我会循环它以从对象生成 CSV 数据,而不依赖于对象键顺序。

var data = [{
  EmployeeID: 12345,
  Name: "ABC",
  "Sr.No": 1
}, {
  EmployeeID: 6789,
  Name: "CDE",
  "Sr.No": 2
}];

var csvOrder = ['Sr.No', 'EmployeeID', 'Name'];

function processCSV(columns, data) {
  var header = csvOrder.join(",");
  var rows = data.map(function (row) {
    const rowData = csvOrder.map(function (key){ return row[key]; });
    return rowData.join(",");
  });

  rows.unshift(header);
  return rows.join("\n\r");
}

console.log(processCSV(csvOrder, data));

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2018-12-07
    • 1970-01-01
    • 2019-11-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多