Вы можете просто разделить строки и нормализовать их, чтобы получить число.
Если значения равны start и end, возьмите либо 1
, либо -1
. В противном случае отсортируйте по первому значению.
const
normalize = s => +s.match(/\d+(\,\d*)?/)[0].replace(',', '.'),
temp = [{ one: 169, two: "0,1 - 6 m", three: "2", four: 12433 }, { one: 169, two: "> 9 m", three: "2", four: 12435 }, { one: 169, two: "0 - 0,1 m", three: "2", four: 12432 }, { one: 169, two: "6,1 - 9 m", three: "2", four: 12434 }];
temp.sort((a, b) => {
const
aa = a.two.split(' - ').map(normalize),
bb = b.two.split(' - ').map(normalize);
if (aa[0] === bb[1]) return 1;
if (aa[1] === bb[0]) return -1;
return aa[0] - bb[0]
});
console.log(temp);
.as-console-wrapper { max-height: 100% !important; top: 0; }