Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 02.12.2020, 16:41
Аспирант
Отправить личное сообщение для dc65k Посмотреть профиль Найти все сообщения от dc65k
 
Регистрация: 19.05.2020
Сообщений: 46

Сортировка массива
Всем привет, подскажите пожалуйста, как оптимизировать решение?

const arr = [
    { "date": "2019-07-31", "v": "5422" },
    { "date": "2019-06-30", "v": "5220" },
    { "date": "2019-05-31", "v": "5365" },
    { "date": "2019-08-31", "v": "5451" },
    { "date": "2019-09-30", "v": "5303" },
    { "date": "2020-03-31", "v": "5654" },
    { "date": "2019-10-31", "v": "5509" },
    { "date": "2019-12-31", "v": "5567" },
    { "date": "2020-01-31", "v": "5597" },
    { "date": "2019-11-30", "v": "5359" },
    { "date": "2020-02-28", "v": "5082" },
    { "date": "2020-04-14", "v": "2567" }
];

 /* result = {
    "2019": [
      "07-31",
      "08-22"
    ],
    "2020": [
      "01-01"
      "02-22"
    ]
  } */


Поправьте, где ошибся или как луче сделать?
const arr1 = [
    { "date": "2019-07-31", "v": "5422" },
    { "date": "2019-06-30", "v": "5220" },
    { "date": "2019-05-31", "v": "5365" },
    { "date": "2019-08-31", "v": "5451" },
    { "date": "2019-09-30", "v": "5303" },
    { "date": "2020-03-31", "v": "5654" },
    { "date": "2019-10-31", "v": "5509" },
    { "date": "2019-12-31", "v": "5567" },
    { "date": "2020-01-31", "v": "5597" },
    { "date": "2019-11-30", "v": "5359" },
    { "date": "2020-02-28", "v": "5082" },
    { "date": "2020-04-14", "v": "2567" }
];
function f(arr) {

    const dateList = operations.map((item) => {
        return new Date(item.date);
    }).sort(function(a, b) {
        return a - b;
    });

    let res = {};

    dateList.forEach(item => {

        if (!res[item.getFullYear()]) {
            res[item.getFullYear()] = [];
        }

        res[item.getFullYear()].push(`${item.getDate()}-${item.getMonth()}`)

    });

    return res;
}
console.log(f(arr1));

Последний раз редактировалось dc65k, 02.12.2020 в 18:01.
Ответить с цитированием
  #2 (permalink)  
Старый 02.12.2020, 17:48
Аватар для рони
Профессор
Отправить личное сообщение для рони Посмотреть профиль Найти все сообщения от рони
 
Регистрация: 27.05.2010
Сообщений: 33,064

dc65k,
<pre>
  <script>
const arr = [
    { "date": "2017-07-31", "amount": "5422" },
    { "date": "2017-06-30", "amount": "5220" },
    { "date": "2017-05-31", "amount": "5365" },
    { "date": "2017-08-31", "amount": "5451" },
    { "date": "2017-09-30", "amount": "5303" },
    { "date": "2018-03-31", "amount": "5654" },
    { "date": "2017-10-31", "amount": "5509" },
    { "date": "2017-12-31", "amount": "5567" },
    { "date": "2018-01-31", "amount": "5597" },
    { "date": "2017-11-30", "amount": "5359" },
    { "date": "2018-02-28", "amount": "5082" },
    { "date": "2018-04-14", "amount": "2567" }
];

 /* result = {
    "2017": [
      "07-31",
      "08-22"
    ],
    "2018": [
      "01-01"
      "02-22"
    ]
  } */
let result = arr.reduce((obj, {date}) => {
let [year, month, data] = date.split(/\-/);
data = `${[month, data].join('-')}`;
obj[year] ? obj[year].push(data) : (obj[year]=[data]);
obj[year].sort();
return obj
}, {})
document.write(JSON.stringify(result, "", 4))
  </script>
</pre>
Ответить с цитированием
  #3 (permalink)  
Старый 06.12.2020, 12:18
Аспирант
Отправить личное сообщение для dc65k Посмотреть профиль Найти все сообщения от dc65k
 
Регистрация: 19.05.2020
Сообщений: 46

Спасибо.
Ответить с цитированием
Ответ



Опции темы Искать в теме
Искать в теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Задача сортировка одномерного массива Helen_Kim Общие вопросы Javascript 1 28.04.2019 15:04
Ввод и сортировка массива Neotwalker Элементы интерфейса 2 05.04.2018 00:14
Сортировка массива по возрастанию другого массива. vas88811 Events/DOM/Window 4 12.01.2014 10:31
Сортировка массива по ключу RazZzeR Элементы интерфейса 9 21.07.2012 19:31
Сортировка двумерного массива методом пузырька lammeR Общие вопросы Javascript 31 01.07.2012 20:48