簡體   English   中英

使用 max、min 和 avg javascript 獲取 json 對象

[英]Get json objects with max, min and avg javascript

我有一些與 javascript 一起使用的 json 代碼。 我需要顯示掃描數的最大值、最小值和平均值,但使用 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'
}

avg 的結果應該是:

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

用數組減少..

 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.log ('max =', JSON.stringify(Max_JSO) ); console.log ('min =', JSON.stringify(Min_JSO) ); console.log ('Avg =', JSON.stringify(Avg_JSO) );

嘗試這個:

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();

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM