附加子项并对动态列表进行排序

时间:2017-02-17 17:14:05

标签: javascript jquery sorting mapbox-gl

我有一张地图,其features根据地图范围而变化。函数renderListings为每个要素创建元素item,然后在每次地图更改时将所有项目添加到listingEl。到目前为止,工作正常。

每个innerHTML的{​​{1}}基于要素的属性 - item,这是一个文本字符串。此时,该函数以无序方式追加项目,而不是按字母顺序。

我尝试将prop.code添加到.sort(),但只有一个项目出现在列表中,其他所有项目都会消失。

如何通过javascript中的要素属性listingEl.appendChild(item).sort()按字母顺序追加子项?

prop.code

1 个答案:

答案 0 :(得分:0)

在将功能添加到列表之前,只需对功能进行排序。

var listingEl = document.getElementById('feature-listing');

function renderListingsSorted(features) {
    var sortedFeatures = sortFeaturesByCode(features);
    renderListings(sortedFeatures);
}

function sortFeaturesByCode(features) {
    return features.sort(function(f1, f2){
        var code1 = f1.properties.code;
        var code2 = f2.properties.code;
        return code1.localeCompare(code2);
    });
}

function renderListings(features) {
    // ...
}