我有一个带有自定义索引(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
}));
}
});
答案 0 :(得分:0)
然后你不应该使用id
作为关键。将id
和aanvrager
一起放在一个对象中,并将其设置为数组的值:
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
}));
}
});