jQuery: сортировка массива объекта по значениям между двумя разделителями - PullRequest
0 голосов
/ 11 апреля 2020

Можно ли отсортировать массив объектов по двум столбцам, но только с учетом значений между двумя разделителями?

Я хотел бы, например, отсортировать по убыванию по размеру, а затем по поверхности, но только с учетом значения между "-" и "-".

Точно так же, как если бы у меня было:

array=[
    {surface: "200", size: "Medium"},
    {surface: "200", size: "Small"},
    {surface: "100", size: "Big"},
    {surface: "300", size: "Medium"},
]

Отсортировано по:

array=[
    {surface: "500", size: "Small"},
    {surface: "300", size: "Medium"},
    {surface: "200", size: "Medium"},
    {surface: "100", size: "Big"}

]

Но вместо этого массива:

array=[
    {surface: "9809-200-45450", size: "fghddffz-Medium-yuifgghj"},
    {surface: "1212-200-43483", size: "sdfsfsdf-Small-fgdfgd"},
    {surface: "2323-100-43264", size: "gdfgsdfg-Big-sddfgdfg"},
    {surface: "9809-300-45450", size: "qdfgqdfg-Medium-hjkghj"},
]

И сортируя его так:

array=[
    {surface: "1212-500-43483", size: "sdfsfsdf-Small-fgdfgd"},
    {surface: "9809-300-45450", size: "qdfgqdfg-Medium-hjkghj"},
    {surface: "9809-200-45450", size: "fghddffz-Medium-yuifgghj"},
    {surface: "2323-100-43264", size: "gdfgsdfg-Big-sddfgdfg"}
]

При стандартной сортировке я бы сделал следующее:

array.sort(function(a, b){
    if(a.size == b.size){
        return (a.surface < b.surface)  ? 1 : (a.surface  > b.surface ) ? -1 : 0;
    }
    else{
        return (a.size < b.size) ? 1 : -1;
    }
});

Но я понятия не имею, как заменить «a / b.surface» или «a / b.size» только частью их значения, а не всей их стоимостью. Я даже не уверен, что это возможно.

Любой совет в правильном направлении был бы великолепен.

Спасибо.

...