Ключи сортировки и значения из архива, ключом является Месяц - PullRequest
0 голосов
/ 28 мая 2018

У меня есть массив с ключами как Месяц и значениями как общий расход за этот месяц.

[May: 629, April: 300, March: 50]

Я хочу заказать этот массив на основе ключа, т.е. месяца.Мой желаемый результат:

[ March: 50,  April: 300, May: 629]

Я попытался отсортировать ключ, выполнив это:

var months = ["January", "February", "March", "April", "May", "June",
            "July", "August", "September", "October", "November", "December"];

var sorted_keys = Object.keys(arr).sort(function(a,b){
  return months.indexOf(a)
           - months.indexOf(b);
});

Как мне отсортировать весь массив?

Любая помощь будетвысоко ценится.

Ответы [ 2 ]

0 голосов
/ 28 мая 2018

Предполагая, что ваши входные данные представляют собой массив строк с форматом, подобным «месяц: расходы», идея состоит в том, чтобы извлечь месяц из этой записи и отсортировать этот массив на основе месяца.Теперь, чтобы отсортировать массив, мы используем карту месяца, где каждый месяц ранжируется.

var monthsHash = {
    "January": 1,
    "February": 2,
    "March": 3,
    "April": 4,
    "May": 5,
    "June": 6,
    "July": 7,
    "August": 8,
    "September": 9,
    "October": 10,
    "November": 11,
    "December": 12
};

var input = ["May: 629", "April: 300", "March: 50"]

input.sort(function (a, b) {
    var a_month = a.split(":")[0],
        b_month = b.split(":")[0],
        a_month_rank = monthsHash[a_month],
        b_month_rank = monthsHash[b_month];

    return a_month_rank - b_month_rank;
});

console.log(input);
0 голосов
/ 28 мая 2018

Попробуйте что-то вроде этого:

var op3MembrosDisp = [];

var w = { id: 2, name: 'karen' };
op3MembrosDisp.push(w);

var w = { id: 1, name: 'Joseph' };
op3MembrosDisp.push(w);

op3MembrosDisp.sort(
            function (a, b) {
                var aId = a.name;
                var bId = b.name;
                return ((aId < bId) ? -1 : ((aId > bId) ? 1 : 0));
            }
        );
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...