假設我有此數組:排序數組項,並保留相同的要素的順序
array.sort(function(a, b) {
if (a.name < b.name) return -1;
if (a.name > b.name) return 1;
return 0;
});
而且ECMAScript language specifications that tell me that:
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)" } ];
而且此功能可將陣列的名字排序
排序不一定穩定(也就是說,比較 相等的元素不一定保持其原始順序)。
因此,排序後,這兩個項目與NAME =背景顏色可以按任何順序出現,即:
[
{ 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)" },
...
]
我怎樣才能陣列,這樣對項目排序同名保持相對順序?我寧願不硬編碼任何東西。
退房這個答案短ES6實現穩定排序的:https://stackoverflow.com/a/48660568/1260020 – simo