Подтвердить что ты не робот

Подчеркивание, чтобы найти минимальное и максимальное значение объекта

В соответствии с учебным пособием здесь,

Коллекция может быть либо массивом, либо объектом, ассоциированным массивом в JavaScript

означает, что все функции в collection одинаково применимы к объектным литералам. Например, я хотел выбрать значения на основе условия. Скажем,

var obj = {
"1": {id: 1, val: 2},
"2": {id: 2, val: 5},
"3": {id: 3, val: 8},
"4": {id: 4, val: 1}
}

Я хочу найти max и min поля val. Глядя на API, я думал использовать pluck для получения массива val, а затем min и max.

  • Могу ли я применить pluck to object (как пример api показывает использование в массиве объектов)
  • Есть ли лучший способ?

Спасибо.

4b9b3361

Ответ 1

означает ли это, что все функции, находящиеся в коллекции, одинаково применимы к объектным литералам?

Да.

Можно ли применить pluck to object (как пример api показывает использование в массиве объектов)

Вы пробовали? Да, вы можете, но вы вернете массив.

есть ли лучший способ?

Math.min.apply(null, _.pluck(obj, "val")) (или _.min(_.pluck(obj, "val"))) для получения минимального значения. Тем не менее, если вы хотите получить весь объект (с id), вы также можете использовать параметр iterator min/max:

var lowest = _.min(obj, function(o){return o.val;});

Ответ 2

Другой способ сделать это, и отлично, если вы хотите вернуть несколько строк, все из которых имеют большое значение, таков:

_.where(obj, {score: _.max(_.pluck(obj, 'value'))});