Javascript-форум (https://javascript.ru/forum/)
-   Элементы интерфейса (https://javascript.ru/forum/dom-window/)
-   -   Как сделать следующие действия с массивом (сортировка)? (https://javascript.ru/forum/dom-window/76850-kak-sdelat-sleduyushhie-dejjstviya-s-massivom-sortirovka.html)

gsdev99 20.02.2019 19:02

Как сделать следующие действия с массивом (сортировка)?
 
Здравствуйте. Подскажите, пожалуйста, как правильно сделать следующую сортировку:
const arr = {
  list: [
    {id: 1, pos: {dv: "T5"}},
    {id: 2, pos: {dv: "T10"}},
    {id: 3, pos: {dv: "T12"}},
    {id: 4, pos: {dv: "T11"}},
    {id: 5, pos: {dv: "T45"}},
    {id: 6, pos: {dv: "T56"}},
    {id: 7, pos: {dv: "T38"}},
    {id: 8, pos: {dv: "T-9"}},
    {id: 9, pos: {dv: "T0"}}
  ]
};

Мне необходимо получить следующую структуру:
Т.е. мне необходимо отсортировать по увеличении. свойства dv, где в строке T далее число.
const arrM = {
  list: [
    {id: 8, pos: {dv: "T-9"}},
    {id: 9, pos: {dv: "T0"}},
    {id: 1, pos: {dv: "T5"}},
    {id: 2, pos: {dv: "T10"}},
    {id: 4, pos: {dv: "T11"}},
    {id: 3, pos: {dv: "T12"}},
    {id: 7, pos: {dv: "T38"}},
    {id: 5, pos: {dv: "T45"}},
    {id: 6, pos: {dv: "T56"}},
  ]
};

рони 20.02.2019 19:35

gsdev99,
начинайте писать код самостоятельно ...
const arr = {
  list: [
    {id: 1, pos: {dv: "T5"}},
    {id: 2, pos: {dv: "T10"}},
    {id: 3, pos: {dv: "T12"}},
    {id: 4, pos: {dv: "T11"}},
    {id: 5, pos: {dv: "T45"}},
    {id: 6, pos: {dv: "T56"}},
    {id: 7, pos: {dv: "T38"}},
    {id: 8, pos: {dv: "T-9"}},
    {id: 9, pos: {dv: "T0"}}
  ]
};
function getNum(str)
{
   return + str.replace(/[^-\d]/g, "")
}
arr.list.sort((a,b) => getNum(a.pos.dv) - getNum(b.pos.dv))

console.log(arr)

gsdev99 20.02.2019 19:39

Спасибо.


Часовой пояс GMT +3, время: 05:30.