我正在使用以下代码从xml文件中检索数据,并且填充了一个javascript数组。然后数据以html表格显示 表格。我希望能够按每列排序。一旦分割了 数组元素,对它们进行排序的最佳方法是什么?谢谢。 //用xml文件中的数据填充数据对象。 //数据是以逗号分隔的值列表 var jsData = new Array(); jsData [0] = {lib:" #field SUBLOOKUP_LIB#",doc:" #field SUBLOOKUP_DOC#", com:" #field SUBLOOKUP_COM"}; //拆分每个元素的值 var o = jsData [0]; o.lib = o.lib.split(","); o.doc = o.doc.split(","); o = o.split(",");
解决方案ye*****@yahoo 写道: [.. 。]我希望能够按每列排序。一旦分割了数组元素,对它们进行排序的最佳方法是什么? [...] //用xml文件中的数据填充数据对象。 //数据是以逗号分隔的值列表 var jsData = new Array(); jsData [0] = {lib:" #field SUBLOOKUP_LIB#",doc:" #field SUBLOOKUP_DOC#", com:" #field SUBLOOKUP_COM"}; //拆分每个元素的值 var o = jsData [0]; o.lib = o.lib.split(","); o .doc = o.doc.split(","); o = o.split(",");
由于表格暗示了一行中所有数据的依赖关系,因此单独对每个列数组进行排序是没有意义的。 你需要一个不同的数据结构,然后你可以应用一个比较器: //使每一行成为一个对象作为一个数组的元素。 var a = [] ; for(var i = 0,len = o.lib.length; i< len; i ++) { a。 push({lib:o.lib [i],doc:o.doc [i],com:o [i]}); } //比较器 函数sortByLibAsc(a,b) { if(a&& b) { if(a.lib< b.lib) { return -1 ; } 否则if(a.lib> b.lib) { 返回1; } } 返回0; } a.sort(sortByLib); PointedEars
Thomas''PointedEars''Lahn写道: //比较器函数sortByLibAsc(a,b) { [...] } a.sort (sortByLib);
a.sort(sortByLibAsc); 当然。 PointedEars
感谢您的帮助Pointed,我越来越近了。 如何让我的数据看起来像这样... jsData [0] = {lib:" string1",doc:" 01",com:" blah"}; jsData [1] = {lib:" string2",doc:" 02",com:" blah"}; jsData [2] = {lib:" string3",doc:" 03",com:" blah"}; jsData [3] = {lib:" string4",doc:" 04" ;,com:" blah"}; jsData [4] = {lib:" string5",doc:" 05",com:" blah"}; jsData [5] = {lib:" string6",doc:" 06",com:" blah"}; jsData [6] = {lib:" string7",doc:" 07",com:" blah"}; ....来自我的数据对象,看起来像这样? //这就是我提取数据的方式,但我需要它以上面的 格式 var jsData = new Array(); jsData [0] = {lib:" #field SUBLOOKUP_LIB#",doc:" #field SUBLOOKUP_DOC#", com:" #field SUBLOOKUP_COM" ;}; var o = jsData [0]; o.lib = o.lib.split(","); o.doc = o.doc.split(","); o = o.split(","); 谢谢。
Hi, I''m using the following code to retrieve data from an xml file and populate a javascript array. The data is then displayed in html table form. I would like to then be able to sort by each column. Once the array elements are split, what is the best way to sort them? Thank you. //populate data object with data from xml file. //Data is a comma delimited list of values var jsData = new Array(); jsData[0] = {lib: "#field SUBLOOKUP_LIB#",doc: "#field SUBLOOKUP_DOC#", com: "#field SUBLOOKUP_COM"}; //split up values for each element var o = jsData[0]; o.lib = o.lib.split(","); o.doc = o.doc.split(","); o = o.split(",");
解决方案 ye*****@yahoo wrote: [...] I would like to then be able to sort by each column. Once the array elements are split, what is the best way to sort them? [...] //populate data object with data from xml file. //Data is a comma delimited list of values var jsData = new Array(); jsData[0] = {lib: "#field SUBLOOKUP_LIB#",doc: "#field SUBLOOKUP_DOC#", com: "#field SUBLOOKUP_COM"}; //split up values for each element var o = jsData[0]; o.lib = o.lib.split(","); o.doc = o.doc.split(","); o = o.split(",");Since the table implies a dependency of all data in one row, it does not make sense to sort each column array independently. You need a different data structure, then you can apply a comparator: // make each row an object as element of an array. var a = []; for (var i = 0, len = o.lib.length; i < len; i++) { a.push({lib: o.lib[i], doc: o.doc[i], com: o[i]}); } // comparator function sortByLibAsc(a, b) { if (a && b) { if (a.lib < b.lib) { return -1; } else if (a.lib > b.lib) { return 1; } } return 0; } a.sort(sortByLib); PointedEars
Thomas ''PointedEars'' Lahn wrote: // comparator function sortByLibAsc(a, b) { [...] } a.sort(sortByLib);a.sort(sortByLibAsc); of course. PointedEars
thank you for the help Pointed, I''m getting closer. How can I get my data to look like this... jsData[0] = {lib:"string1",doc:"01",com:"blah"}; jsData[1] = {lib:"string2",doc:"02",com:"blah"}; jsData[2] = {lib:"string3",doc:"03",com:"blah"}; jsData[3] = {lib:"string4",doc:"04",com:"blah"}; jsData[4] = {lib:"string5",doc:"05",com:"blah"}; jsData[5] = {lib:"string6",doc:"06",com:"blah"}; jsData[6] = {lib:"string7",doc:"07",com:"blah"}; ....from my data object that looks like this? //this is how I extract the data, but I need it to be in the above format var jsData = new Array(); jsData[0] = {lib: "#field SUBLOOKUP_LIB#",doc: "#field SUBLOOKUP_DOC#", com: "#field SUBLOOKUP_COM"}; var o = jsData[0]; o.lib = o.lib.split(","); o.doc = o.doc.split(","); o = o.split(","); Thanks.更多推荐
排序数组问题
发布评论