Поскольку я использую Nativescript, я использую один и тот же код Typescript для Android и iOS.
У меня очень большой набор данных, состоящий из 1000-2000 (может быть больше) объектов с очень большими значениями данных в массиве.
const unsorted = [
...,
{
name: "name1",
value: 10000000
},{
name: "name120",
value: 200000000
},{
name: "name42",
value: 3
},{
name: "name1203",
value: 1000000000000
},
...
];
const sorted = unsorted.sort((a,b) => (b.value-a.value));
На Android sorted
всегда правильно сортируется, а iOS - нет. Массивы iOS возвращают «наполовину отсортированные» - первые десять или двадцать отсортированы правильно, но затем случайным образом имеют неправильно отсортированные значения, как в моем примере ниже:
[...1003, 26, 1002, 1001, ..., 20, 19, 14, 18, 17, 16, 15, 13, 12, 11, 10]
Я обнаружил, что могу получить одинаковые данные на Android и iOS, если сделаю что-то грязное, например:
const secondSort = sorted.sort((a,b) => (b.value-a.value));
const thirdSort = secondSort.sort((a,b) => (b.value-a.value));
const fourthSort = thirdSort.sort((a,b) => (b.value-a.value));
Так что может показаться, что первая сортировка фактически не сортирует мой большой набор данных полностью.
Кто-нибудь еще видел такое поведение? Или, может быть, это можно сделать методом грубой силы, чтобы мне не нужно было объединять несколько функций сортировки?