javascript中的行排序

javascript中的行排序,javascript,jquery,csv,Javascript,Jquery,Csv,我有一个解析csv文件的代码,然后给我一个图表,我的问题是我希望它按字母顺序对csv文件的行进行排序,然后开始比较以找到相同的单词,并希望它在没有找到相似性时停止检查下一个单词,因此程序不需要检查9000*9000行 <html> <head> <title>Chart</title> <script type="text/javascript" src="jquery.min.js"></script>

我有一个解析csv文件的代码,然后给我一个图表,我的问题是我希望它按字母顺序对csv文件的行进行排序,然后开始比较以找到相同的单词,并希望它在没有找到相似性时停止检查下一个单词,因此程序不需要检查9000*9000行

<html>
<head>
    <title>Chart</title>
    <script type="text/javascript" src="jquery.min.js"></script>
    <script type="text/javascript" src="highcharts.js"></script>
    <link rel="stylesheet"  href="style.css" />
</head>

<body>

<script>
$(document).ready(function() {
$.ajax({
   type: "GET",
   url: "uk-4_2_2013.complet.csv",
   dataType: "text",
   success: function(data) {processData(data);}
});
});

function processData(allText) {
// varriable qui contient toutes les lignes du fichier CSV
var allTextLines = allText.split(/\r\n|\n/);

// liste des lignes 
var lignes=new Array(); 
var nombres=new Array(); 

// liste d'occurance qui correspond a chaque ligne
var nombre =[];
var x=0;
var y=0;
var inter1;
var inter2;
var i=0;
var j=0;    
//on parcours les lignes

for ( i=0; i<allTextLines.length; i++) 
  { 
    inetr1 = allTextLines[i].split(';');

      if(lignes.indexOf(inetr1[0])<0)
      {
             lignes[x]=inetr1[0];
             nombres[x]=0;
               for (j=0; j<allTextLines.length; j++)    
                {
                    inetr2 = allTextLines[j].split(';');
                   if (inetr1[0]==inetr2[0])
                     {
                       nombres[x]=nombres[x]+1;
                     }       
                }                   
         x=x+1;                                               
      }   
  }

 $('#Chart_App').highcharts({
    chart: {
        type: 'bar'
    },
    xAxis: {
        categories: lignes
    },
    yAxis: {
        title: {
            text: 'Apps Downloaded'
        }
    },
    series: [{

        data: nombres
    }]
});  
}
</script>

<div id="Chart_App">
</div>

</body>
</html>

谢谢

您已经有了一个数组,其中包含了您的值。您可以按如下方式对其进行排序:

var allTextLines = allText.split(/\r\n|\n/);
for(var i = allTextLines.length;--i;){
   allTextLines[i] = allTextLines[i].split(';');
}
//...
// now depending on your keys, sort your Array according to the
// index x where the relevant words are
allTextLines.sort(function(a,b){return (a[x] > b[x]);})

现在,您已经对数组
所有文本行进行了排序,并可以完成其余的工作。

正如评论所说,您应该使用数据库对如此大量的数据执行此操作

无论如何,在Javascript中,一旦有了一个包含CSV值的数组,就可以使用该方法按字母顺序对其进行排序

allTextLines.sort();
这将更改原始数组

编辑:正在计算发生次数

我知道您想检查每个单词在CSV中出现的次数。您有一个每行一个单词的CSV,因此allTextLines是一个每元素一个单词的数组。在sort()方法之后,它按字母顺序排列。这是一个想法:

allTextLines.sort();

var lignes = new Array();  // diferent word values
var nombres = new Array();  // their occurrences
var word = allTextLines[0];  // temp word value
var count = 0;  // different words counter
var occurrence = 1; // occurrence of the temp word
for ( i=1; i<allTextLines.length; i++) {
  if (allTextLines[i] != word){
    lignes[count] = word;
    nombres[count] = occurrence;
    count++;
    word = allTextLines[i];
    occurrence = 0;
  } else {
    occurrence++;
  }
}
allTextLines.sort();
var lignes=new Array();//不同的词值
var nombres=新数组();//它们的出现
var word=所有文本行[0];//临时字值
变量计数=0;//异字计数器
变量发生率=1;//临时词的出现

对于(i=1;在javascript中插入9000行并稍后对其执行搜索…您应该将其外包给某个数据库;)^..您可以在服务器端使用相同的ajax进行查询。它将更快,使用更少的内存,并提供更好的用户体验。我发布的代码工作正常,问题是浏览器在检查csv文件时崩溃40秒,原因是检查相似性的循环,但它会首先对它们进行排序,这将节省大量时间。只要你继续使用这个方法,你文章中的第一条评论就会是一样的:把所有的行放到一个数组中,然后使用。我不知道怎么做,有人能修改我的代码和文章吗。因为我对这件事一无所知。不管怎样,我从来都不喜欢它。没用也许我错过了什么!!我刚刚复制了你的代码。
a
b
已经是数组值,没有两个数组是从数组
所有文本行构建的,可以访问。另外,通过在数组中循环并设置
var inetr1
?@Simon感谢您指出输入错误:-p我想您可以自己发现这是一个c&p错误,但谁在乎呢。zazoo24,用此代码再试一次。用正确的索引(存储名称的数组中的索引)替换
[x]
。整个代码对于这个拼写错误没有任何意义,这就是为什么我不认为它可能是一个拼写错误,删除了我的否决票。
allTextLines.sort();

var lignes = new Array();  // diferent word values
var nombres = new Array();  // their occurrences
var word = allTextLines[0];  // temp word value
var count = 0;  // different words counter
var occurrence = 1; // occurrence of the temp word
for ( i=1; i<allTextLines.length; i++) {
  if (allTextLines[i] != word){
    lignes[count] = word;
    nombres[count] = occurrence;
    count++;
    word = allTextLines[i];
    occurrence = 0;
  } else {
    occurrence++;
  }
}