Предположим, что у меня есть этот массив:
var array = [
{ name: "border-color", value: "#CCCCCC" },
{ name: "color", value: "#FFFFFF" },
{ name: "background-color", value: "rgb(0, 0, 0)" },
{ name: "background-color", value: "rgba(0, 0, 0, .5)" }
];
И эта функция сортирует массив по имени:
array.sort(function(a, b) {
if (a.name < b.name) return -1;
if (a.name > b.name) return 1;
return 0;
});
И Спецификации языка ECMAScript, которые говорят мне, что:
Сорт не обязательно стабильный (то есть элементы, которые сравнивают равные, не обязательно остаются в их первоначальном порядке).
Итак, после сортировки два элемента с именем = цвет фона могут отображаться в любом порядке, например:
[
{ name: "background-color", value: "rgb(0, 0, 0)" },
{ name: "background-color", value: "rgba(0, 0, 0, .5)" },
...
]
или
[
{ name: "background-color", value: "rgba(0, 0, 0, .5)" },
{ name: "background-color", value: "rgb(0, 0, 0)" },
...
]
Как я могу отсортировать массив так, чтобы элементы с одинаковым именем сохраняли свой относительный порядок? Я бы предпочел ничего не делать.