【问题标题】:Simple abc sorting for javascriptjavascript的简单abc排序
【发布时间】:2014-08-08 12:21:10
【问题描述】:

我有一个简单的网站,它从 xml 提要收集当地海滩天气数据,并使用 javascript 将其显示在移动友好网站 (rannailm.com) 中。

有人可以帮我一个简单的方法,根据“koht”(意思是位置)变量向这个列表添加字母排序。

无论我尝试了什么,我都搞砸了。

我当前的脚本如下:

<script type="text/javascript">
    $(function () {

        $.getJSON('http://rannailm.com/g4s.json', function (data) {
            var temperatures = data;

            var listItems = $.map(temperatures, function (item) {
            if (!item.IsHidden)
            {
                    var koht = !item.KohtFixed ? item.Koht : item.KohtFixed;
                    return $('<li class="m-item">')
                        .append(
                            $('<h3 class="m-header">').append($('<a>').html(koht + " " + item.Vesi)),
                            $('<div class="m-content">')
                            .append($('<div class="m-inner-content">')
                                .append($('<img>').attr("src", getImage(item.Ilm)).attr("alt", item.Ilm).addClass("ilmIkoon"))
                                .append($('<img>').attr("src", getImage(item.Lipp)).attr("alt", item.Lipp).addClass("lipp"))
                                .append($('<p>').html("ÕHK " + item.Temp))
                                .append($('<p>').html("RAHVAST " + item.Rahvast))
                                .append($('<h5>').html("Viimati uuendatud " + item.Aeg))));
            }
                });

                $('#temp-list').empty().append(listItems);
                $('.m-bellows').bellows();

        });
    });       

</script>

【问题讨论】:

  • 你在哪里排序?
  • @Mritunjay AJAX 调用返回的数据?
  • 当你说它是一个 xml 提要但显示的代码是 json 时令人困惑
  • 是的,很抱歉造成混淆,但是 json 是从 XML 提要创建的,并稍微调整了输入。

标签: javascript jquery sorting alphabetical alphabetical-sort


【解决方案1】:

您可以使用https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/sort对数据进行排序

$.getJSON('http://rannailm.com/g4s.json', function (data) {
    data.sort(function(a, b) {
       if (a.Koht > b.Koht) return 1;
       if (a.Koht < b.Koht) return -1;
       return 0;
    })
    // This is not really needed, if you want a different name, just
    // change the parameter name from data to temperatures
    var temperatures = data;

    var listItems = $.map(temperatures, function (item) {
    if (!item.IsHidden) 
    // rest of your code

Sort array of objects by string property value in JavaScript

【讨论】:

  • 谢谢,我之前试过这个功能,还是不能排序。也许更好的问题是我应该在哪里插入这个函数?有区别吗?
  • 非常感谢!现在就像一个魅力。
【解决方案2】:

使用您的 json 数据响应的结果,您可以在原生 javascript 中进行排序。

// just test data 
var data = []; 

for(var i=0;i<10;i++){
    data.push({ koht: (i+1*3), name : "blab bla " + i.toString() });    
}

// ascending 
data.sort(function(a, b) {
   return a.koht - b.koht; 
}); 

alert(data[0].koht + "  " + data[0].name);        

// descending 
data.sort(function(a, b) {
   return b.koht - a.koht; 
}); 

alert(data[0].koht + "  " + data[0].name);    

您可以将排序函数包装在原型方法中:

 Array.prototype.SortAscending = function() {
           var arr = this; 
           return arr.sort(function(a, b) {
                 return a.koht - b.koht; 
           }); 
     }; 

     Array.prototype.SortDescending = function() {
            var arr = this; 
            return arr.sort(function(a, b) {
                return b.koht - a.koht; 
              }); 
     }; 

  //   then you can use those functions in your code like this: 



    data.SortAscending(); 

      //or sort descending: 

      data.SortDescending(); 

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-07-02
    • 1970-01-01
    • 2017-06-07
    • 2015-06-22
    • 2011-03-09
    • 2015-05-03
    相关资源
    最近更新 更多