过滤CSV以仅显示包含“游戏”的行

时间:2016-10-19 18:20:27

标签: javascript

它已被试用并且主要是错误...我有javascript来解析csv文件的所有行但我想将它限制为只有那些具有特定字符串...游戏的行。关于如何编辑此代码以实现这一点的任何想法?谢谢。

$('#left').ready(function() {

promise = $.ajax({
    type:"GET",
    dataType:"text",
    url:"games.csv",
    cache:false
});

promise.done(function(data){

    var dataArr = data.split("\n");

    $.each(dataArr,function(){
        if (this != "") {

            var row = new String("");
            valArr = this.split(",");
                row += "<tr>"

            $.each(valArr, function(){
                row += "<td>" + this +"</td>"
            });     

                row += "</tr>"

             $('#games tbody').append(row);

        }

    });

});

// Run script if request fails
promise.fail(function() {
   console.log('A failure ocurred');
});

});

2 个答案:

答案 0 :(得分:0)

首先,我在构建dom之前构建一个对象数组。

  1. 解析您的CSV文件并根据键行构建对象,假设您使用的是键行(例如,大多数CSV导出数据的顶行)。
  2. 将这些对象存储在数组中
  3. 使用var filtered = array.filter( callbackFunc )
  4. 过滤数组
  5. 然后根据filtered数组
  6. 构建DOM行

答案 1 :(得分:0)

我会做这样的事情。

看看它是否有效。

promise.done(function (data) {
  var i, nodes, rows, cols, html;

  nodes = [];
  rows = data.split("\n");
  for (i = 0; i < rows.length; i++)
  {
    if (rows[i] === "")
    {
      continue; // empty line
    }

    if (rows[i].indexOf("games") === -1)
    {
      continue; // does not contain "games"
    }

    cols = rows[i].split(",");
    html = "<tr><td>" + cols.join("</td><td>") + "</td></tr>";
    nodes.push($(html));
  }

  $("#games tbody").empty();
  while (nodes.length > 0)
  {
    $("#games tbody").append(nodes.shift());
  }
});