2009-12-02 98 views
0

在我的数据库中,我存储了一些“主题”和“示例”。每个示例都属于一个主题。JSON最佳实践:过滤节点客户端还是不是?

我想按照名称ASC在树组件中显示除一个主题(主题C)之外的所有主题,我总是希望它们位于顶部。这可能稍后会发生变化,我宁愿不更改DB中的主题和示例的基本JSON输出。

1)它看起来合理,生成“无序列表”结构的客户端(或应该我,已经在json_encode()阶段确定的顺序是适当的?)和

2)我怎么会,在这种情况下,按名称过滤一个特定的主题节点,并将其放在序列中的第一个?

  • 话题C
  • 主题甲
  • 议题B

回答

0

你的问题是非常困难不知道exaclty你这样做的理由来回答!

不管怎样,在试图回答, 1):

  • 如果您在HTML服务器上生成一个列表,无论如何,和列表的顺序不会改变,为什么它JSON & JavaScript?使用你的服务器端技术来做到这一点。

  • 如果列表将发生变化,并且您希望在客户端的用户界面中管理列表的顺序,并且具有可访问性注意事项:使用服务器端技术创建列表和JSON,然后为服务器端和服务器端命令然后呈现您的HTML列表并将您的JSON传递给客户端。这将使列表可供客户端(用户)在未启用JavaScript的情况下使用,并且可用于支持JavaScript的客户端的“可排序列表”。

  • 如果您对没有JavaScript的用户没有任何关注,并且该列表需要可重新订购,那么只需将您的JSON数据传递给您的客户端并使用JavaScript来呈现它并处理重新排序。

2)我假设你想要排序的每个对象都在一个数组中?如果他们是那么我会使用阵列。排序方法:www.w3schools.com/jsref/jsref_sort.asp

类似下面的应该给你如何去这样做的想法:

 var data = [{ 
    "Topic" : "C", 
    "Examples":[ 
    {"Example" : "Example A one"}, 
    {"Example" : "Example A two"}, 
    ] 
    },{ 
    "Topic" : "B", 
    "Examples":[ 
    {"Example" : "Example B one"}, 
    {"Example" : "Example B two"}, 
    ] 
    },{ 
    "Topic" : "A", 
    "Examples":[ 
    {"Example" : "Example C one"}, 
    {"Example" : "Example C two"}, 
    ] 
    }]; 

    function sortTopics(topics, firstItem){ 
    var sortedArray = []; 

    for (var i = 0; i < topics.length; i++) { 
    if (topics[i].Topic == firstItem) { 
     //add the specified first item 
     sortedArray.push(topics[i]); 
     //remove element from original 
     topics.splice(i,1); 
break; 
    } 

    } 

    //sort the remainder of the array 
    topics.sort(function(a,b){ 
    if(a.Topic < b.Topic){return -1;} 
    if(a.Topic > b.Topic){return 1;} 
    return 0; 
    }); 

    //loop though and add each item to the new array   
    for (var i = 0; i < topics.length; i++) { 
    sortedArray.push(topics[i]); 
    } 

    return sortedArray; 
    } 

    sortTopics(data, "C"); 

我不知道它会浏览器如何交叉是,显然你需要从JSON生成列表,但它应该给你开始的地方,当然你可以使它更加通用和高效!

祝你好运。

+0

伟大的代码示例 - 感谢您致力于您的时间。 我从来没有真正生成的HTML服务器端,但也许我应该? 不知何故,在JSON中输出所有内容并进行排序等客户端方面感觉更加灵活。嗯,坏办法? – dani 2009-12-02 18:23:50

+0

ps。错字:“休息”;应该进入if语句中。 – dani 2009-12-02 18:43:36

相关问题