2015-01-14 2 views
1

У меня есть список оценок FICO, которые я хотел бы группировать в зависимости от их значения, с группами, начинающимися с 0-620, затем с 620-640, каждый раз увеличивая на 20.Использование _.countBy с диапазонами

Что нужно вернуть, это количество значений в каждой группе - 0-620, 620-640, 640-660, 660-680 и т. Д. До 780-800.

В настоящее время я использую _.countBy, но он возвращает количество для каждого уникального номера, а не для каждой группы.

var counts = _.countBy(ficos, function(x) { return x }); 
//Counts should be {620: 22, 625: 19, 655: 24, 670: 20, 690: 30, 720: 29, 734: 17, 760: 21, 790: 18} 

Есть ли способ, чтобы воспользоваться _.countBy или какой-либо другой функции? Я стараюсь избегать длинного заявления if, если это возможно.

+0

Вы должны добавить пример данных, который вы используете, чтобы мы могли проверить его. –

ответ

1

Так возвращают соответствующие группы затем:

function (x) { 
    if (x < 620) return '<620'; 
    if (x >= 800) return '>800'; 

    var lower = Math.floor(x/20) * 20, 
     higher = lower + 20; 
    return lower + '-' + higher; 
} 
+0

Я смущен - ОП спрашивает, как подсчитать, какие из них находятся в определенных группах, и вы говорите ... что? Я не понимаю. –

+0

@QPaysTaxes Я предоставил функцию, которая группирует входные числа в определенные группы по требованию. – zerkms

+0

Нет, вы предоставили функцию, которая дает группу заданного числа. Требовалось, чтобы вы их группировали. Построение списка из результатов этого, тогда использование '_.countBy' выполнило бы требования, но этого само по себе нет. –

Смежные вопросы