ChromeのArray.sort()
機能を安定させようとしています。私は安定した並べ替えを実装する他のライブラリがあることを知っていますが、私はアニメーションをトリガーするsort()
関数を聞いていくつかの他のライブラリを使用しているので、ネイティブArray.sort()
が安定するようにしようとしていますが、安定している。Chromeの安定したソート機能
myArray.sort(function (a, b) {
if (a.someVal > b.someVal) return -1
else if (a.someVal < b.someVal) return 1
//return 0 I shouldn't return 0 as its order will be randomise by chrome
// My hack around idea was to somehow track their index but this is not working, probably while sorting is ongoing, looking up the index gets messed up? IDK.
let aIndex = myArray.findIndex(x => x.id === a.id)
let bIndex = myArray.findIndex(x => x.id === b.id)
return aIndex < bIndex ? -1 : 1
})
誰でもどのようにしてクロムのソート機能を安定させることができますか?
例、並べ替えはb
で行います。 安定ソート
[
{'a':7,'b':2},
{'a':1,'b':1},
{'a':2,'b':1},
{'a':3,'b':1},
{'a':4,'b':1},
{'a':5,'b':1},
{'a':6,'b':1}
]
Chromeの不安定ソート期待
[
{'a':1,'b':1},
{'a':2,'b':1},
{'a':3,'b':1},
{'a':4,'b':1},
{'a':5,'b':1},
{'a':6,'b':1},
{'a':7,'b':2},
]
考える
[
{'a':7,'b':2},
{'a':4,'b':1},
{'a':3,'b':1},
{'a':2,'b':1},
{'a':1,'b':1},
{'a':6,'b':1},
{'a':5,'b':1}
]
可能な複製(https://stackoverflow.com/questions/1427608/fast-stable-sorting-algorithm -implementation-in-javascript) – sapics
要素が等しい場合、0を返すことは重要です。 –
@ JonasW。 0を返すと、注文の運命はブラウザに残りますが、Chromeの場合のように安定していない可能性があります。 –