Получить объекты json с максимальным, минимальным и средним javascript

У меня есть код json, который я использую с javascript. Мне нужно показать максимальное, минимальное и среднее число сканирований, но с объектами json.

Это мой пример json:

{
  'name': 'same',
  'scans': 3674,
  'date': '2003-02-01'
},
{
  'name': 'same',
  'scans': 8347,
  'date': '2005-12-03'
},
{
  'name': 'same',
  'scans': 6876,
  'date': '2014-03-06'
}

Результат для max должен быть:

{
  'name': 'same',
  'scans': 8347,
  'date': '2005-12-03'
}

Результат для min должен быть:

{
  'name': 'same',
  'scans': 3674,
  'date': '2003-02-01'
}

Результат для среднего должен быть:

{
  'name': 'same',
  'scans': 6299,
}

Что вы пытались решить?

nmanh 10.04.2019 01:08
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
В настоящее время производительность загрузки веб-сайта имеет решающее значение не только для удобства пользователей, но и для ранжирования в...
Безумие обратных вызовов в javascript [JS]
Безумие обратных вызовов в javascript [JS]
Здравствуйте! Юный падаван 🚀. Присоединяйся ко мне, чтобы разобраться в одной из самых запутанных концепций, когда вы начинаете изучать мир...
Система управления парковками с использованием HTML, CSS и JavaScript
Система управления парковками с использованием HTML, CSS и JavaScript
Веб-сайт по управлению парковками был создан с использованием HTML, CSS и JavaScript. Это простой сайт, ничего вычурного. Основная цель -...
JavaScript Вопросы с множественным выбором и ответы
JavaScript Вопросы с множественным выбором и ответы
Если вы ищете платформу, которая предоставляет вам бесплатный тест JavaScript MCQ (Multiple Choice Questions With Answers) для оценки ваших знаний,...
2
1
314
3
Перейти к ответу Данный вопрос помечен как решенный

Ответы 3

Попробуй это:

function maxScans(jsonData) {
  let max = jsonData[0].scans;

  for (let i = 1; i < jsonData.length; i ++) {
    if (jsonData[i].scans > maxScans) maxScans = jsonData[i]
  }
  return {
    name: jsonData[0].name,
    scans: max
  }
}

Полный ответ будет включать в себя подсчет общего количества сканирований по мере повторения данных, а затем использование этого для расчета среднего значения.

Например, вы можете написать несколько редукторов, которые справятся с этой задачей.

const json = [
  {
    name: 'same',
    scans: 3674,
    date: '2003-02-01',
  },
  {
    name: 'same',
    scans: 8347,
    date: '2005-12-03',
  },
  {
    name: 'same',
    scans: 6876,
    date: '2014-03-06',
  },
];

const max = json.reduce((acc, obj) => {
  if (!acc || obj.scans > acc.scans) {
    return obj;
  }

  return acc;
});

const min = json.reduce((acc, obj) => {
  if (!acc || obj.scans < acc.scans) {
    return obj;
  }

  return acc;
});

const avg = json
  .reduce(
    (acc, obj) => {
      return {
        ...acc,
        name: obj.name,
        value: acc.value + obj.scans,
        count: acc.count + 1,
      };
    },
    {
      value: 0,
      name: '',
      count: 0,
      exec() {
        return {
          name: this.name,
          scans: this.value / this.count,
        };
      },
    },
  )
  .exec();
Ответ принят как подходящий

с уменьшением массива..

    var myJSON = [
        { 'name': 'same', 'scans': 3674, 'date': '2003-02-01' }
      , { 'name': 'same', 'scans': 8347, 'date': '2005-12-03' }
      , { 'name': 'same', 'scans': 6876, 'date': '2014-03-06' }
    ];

    var Max_JSO = myJSON.reduce( (acc, cur )=> ((acc.scans > cur.scans)? acc : cur) );
    var Min_JSO = myJSON.reduce( (acc, cur )=> ((acc.scans < cur.scans)? acc : cur) );

    var Avg_JSO = myJSON.reduce( (acc, cur, idx, arr )=> {
      let
        sum = acc.scans + cur.scans,
        no = idx +1;
      if (no === arr.length) { sum = sum / no };
      return { 'name': cur.name, 'scans': sum }
    });

    console.info ('max =', JSON.stringify(Max_JSO) );
    console.info ('min =', JSON.stringify(Min_JSO) );
    console.info ('Avg =', JSON.stringify(Avg_JSO) );

Хорошее использование аргументов idx и arr, не думал об этом;)

optimisticupdate 10.04.2019 01:49

Другие вопросы по теме