排序数组问题

编程入门 行业动态 更新时间:2024-10-08 20:29:27
本文介绍了排序数组问题的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧! 问题描述

我正在使用以下代码从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.

更多推荐

排序数组问题

本文发布于:2023-11-29 06:12:56,感谢您对本站的认可!
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
本文标签:数组

发布评论

评论列表 (有 0 条评论)
草根站长

>www.elefans.com

编程频道|电子爱好者 - 技术资讯及电子产品介绍!