D3.js Пройдите по Вложенному массиву, чтобы найти Максимальное значение

#d3.js #multidimensional-array #max

Вопрос:

У меня есть вложенный массив, который выглядит следующим образом: Вложенный массив

Я хотел бы пройти по вложенному массиву и найти максимальное значение поля «значение», расположенного в разделе grouped_ratings > значения >> >>значение

Я попробовал следующее и, похоже, не могу разобраться в проблеме.

 var yMax = d3.max(grouped_ratings, function(g) {
            return d3.map(g.values, function(v) {
              return d3.max(v.value)
            })
          });
 

Ответ №1:

Переключитесь d3.map на d3.max самую внутреннюю функцию и в ней, вы можете просто return v.value . Вот как это выглядит:

 d3.max(grouped_ratings, function (g) {
  return d3.max(g.values, function (v) {
    return v.value;
  });
});
 

Или в виде однострочного: d3.max(grouped_ratings, g => d3.max(g.values, v => v.value))

Эти фрагменты работают, когда grouped_ratings имеет формат

 grouped_ratings = [
  {
    key: '2011',
    values: [
      { key: '1', value: 151 },
      { key: '2', value: 12 },
      { key: '3', value: 314 },
      { key: '4', value: 178 },
      { key: '5', value: 31 },
      { key: '6', value: 1 },
      { key: '7', value: 1 },
    ]
  },
  {
    key: '2012',
    values: [
      { key: '1', value: 203 },
      { key: '2', value: 4 },
      { key: '3', value: 41 },
      { key: '4', value: 87 },
      { key: '5', value: 13 },
      { key: '6', value: 10 },
      { key: '7', value: 100 },
    ]
  },
]