Javascript排序数组而不更改索引

时间:2014-05-03 12:25:37

标签: javascript arrays sorting

我有一个带有自定义索引(id)和名称的数组,只想在不更改索引(id)的情况下对名称进行排序。见下面我的数组。这可以用javascript吗?

var aanvragerslijst = [];

    if (item.get_item("Aanvrager")) {
        var aanvragerID = item.get_item("ID");
        var aanvrager = item.get_item("Aanvrager");
        aanvragerslijst[aanvragerID] = aanvrager;
    }

我使用此数组填充选择项=>

$.each(aanvragerslijst, function (key, value) {
    if (value) {
        $('#LKAanvrager').append($("<option/>", {
            value: key,
            text: value
        }));
    }
});

2 个答案:

答案 0 :(得分:0)

然后你不应该使用id作为关键。将idaanvrager一起放在一个对象中,并将其设置为数组的值:

aanvragerslijst[] = {
    id: item.get_item("ID"),
    aanvrager: item.get_item("Aanvrager")
}

然后,您可以按照自己想要的方式对aanvragerslijst进行排序,而不会丢失id

答案 1 :(得分:0)

您对自己尝试做的事情的描述是矛盾的。您无法对数组进行排序,并期望其索引保持不变。 索引定义数组的顺序

答案是不要将您的ID用作数组索引。使用对象填充数组:

var aanvragerslijst = [];

if (item.get_item("Aanvrager")) {
    aanvragerslijst.push({
        id: item.get_item("ID"),
        value: item.get_item("Aanvrager")
    });
}

排序:

aanvragerslijst.sort(function (l, r) { return l.value.localeCompare(r.value); });

如果要填充下拉列表,请从这些对象中获取ID和值,而不是使用数组索引:

$.each(aanvragerslijst, function (key, value) {
    if (value) {
        $('#LKAanvrager').append($("<option/>", {
            value: value.id,
            text: value.value
        }));
    }
});