答案 0 :(得分:1)
简而言之 - 是的
文档中没有描述,但是... Mori使用Clojure脚本中的排序(在mori存储库中没有sortBy的其他实现) https://github.com/swannodette/mori/blob/master/src/mori.cljs#L30
(mori-export sortBy cljs.core/sort-by)
从cljs实现sort-by https://github.com/clojure/clojurescript/blob/master/src/main/cljs/cljs/core.cljs#L2328
使用声称稳定的Google Closure库 https://github.com/google/closure-library/blob/master/closure/goog/array/array.js#L1144
答案 1 :(得分:1)
这是一个检查稳定性的测试脚本:
// Perform tests (increase number for thorough test):
for (var i = 0; i < 4; i++) {
// Create random array of zeroes and ones, and pair them with a sequence number:
const arr = Array.from(Array(10), (_, i) => [+(Math.random()>=0.5), i]);
console.log('in: ', JSON.stringify(arr));
// Sort by the 0 and 1 values:
const result = mori.toJs(mori.sortBy(v => v[0], arr));
console.log('out:', JSON.stringify(result));
// Throw an error if the sequence number of equal values is not increasing
result.reduce( (a, b) => {
if (a[0] === b[0] && a[1] > b[1]) throw "Not stable!";
return b;
} );
}
console.log('is stable');
.as-console-wrapper { max-height: 100% !important; top: 0; }
<script src="https://cdnjs.cloudflare.com/ajax/libs/mori/0.3.2/mori.min.js"></script>
使用大型数组尝试多次时,事实证明,排序始终保持具有相同排序顺序的值的原始顺序。所以它很稳定。