在JS for循环中对记录进行排序

时间:2015-02-04 21:24:33

标签: javascript for-loop

我有以下代码。根据用户的搜索日期标准,它将产生以下结果(搜索结果Tampa ...)。它工作正常,但有一种方法我可以排序" CODE"在保持" CODE"的同时按降序排列战术日期?基本上我想"日期:2014年9月4日当天最高概率:47%"成为第一个记录,依此类推。另外,我试过.sort,似乎认为16小于2,我猜是因为它是一个数组?谢谢。

    function showResults (results) {
            var resultItems = [];
            var resultCount = results.features.length;

            if (resultCount == 0){
                resultItems.push("<p class='reportHeader_font'><b>No data available for this location during the specified date(s).</b></p><br>");
            }
            else {
                resultItems.push("<p class='reportHeader_fontSemiBig'><b>Search Results</b></p>");
                resultItems.push("<p class='reportHeader_font'><b>" + addressText + "</b></p><br>");
            }
            for (var i = 0; i < resultCount; i++) {
                var featureAttributes = results.features[i].attributes;


                if (attr = "DATE_VAL"){
                        attr1 = "Date"
                        var dateVal = "/Date(" + featureAttributes[attr] + ")/"
                        var date = new Date( parseFloat( dateVal.substr(6 ))).addHours(8);

                        // Add one day also because the above formula is for midnight GMT which is 6PM of the previous day.
                        resultDate = (date.getMonth() + 1) + "/" + date.getDate() + "/" + date.getFullYear()
                        resultItems.push("<b>" + attr1 + ":</b>  " + resultDate + "<br>");

                }
                if (attr = "CODE"){
                        attr1 = "Highest Probability of the Day"
                        resultItems.push("<b>" + attr1 + ":</b>  " + featureAttributes[attr]*10 + "%" + "<br>");
                }

            resultItems.push("<br>");

            }
            dom.byId("info").innerHTML = resultItems.join("");
            // Remove the Searching... after the query completes
            document.getElementById('wait').innerHTML = "";

        }

搜索结果 坦帕,佛罗里达州,美国

日期:2014年9月1日 当天最高概率:19%

日期:2014年9月2日 当天最高概率:27%

日期:2014年9月3日 当天最高概率:21%

日期:2014年9月4日 当天最高概率:47%

日期:2014年9月6日 当天最高概率:37%

2 个答案:

答案 0 :(得分:1)

尝试添加以下内容作为showResults功能的第一行:

results.features.sort(function(a, b) {
    return a.attributes.CODE - b.attributes.CODE;
});

答案 1 :(得分:0)

您是否考虑过利用外部库? Underscore有一些非常好的辅助函数用于排序和过滤。

http://underscorejs.org/#sortBy

您还可以从underscore.js

查看indexBy
var stooges = [{name: 'moe', age: 40}, {name: 'larry', age: 50}, {name: 'curly', age: 60}];
_.indexBy(stooges, 'age');
=> {
  "40": {name: 'moe', age: 40},
  "50": {name: 'larry', age: 50},
  "60": {name: 'curly', age: 60}
}

你可以通过percantage分离一些关注点和索引你的数组,之后将它绑定到一些html