オブジェクトをsliceしたい – JavaScript

例えば日付と紐づいて値が管理されているオブジェクトから「最新の3つの情報」を取り出したい場合。

Object.keysで取得したキー情報をソートしたものをsliceしてから、reduceメソッドでオブジェクトを再構築しましょう。

// ソートしたいオブジェクト
const data = {
  '2021-02-04': 587,
  '2020-12-30': 324,
  '2021-01-12': 284,
  '2021-02-19': 253,
  '2020-11-21': 492,
}

// オブジェクトのキー情報を最新日順にソートしてslice
let dates = Object.keys(data);
dates = dates.sort((a, b) => new Date(b).getTime() - new Date(a).getTime());
dates = dates.slice(0, 3);

// reduceメソッドでオブジェクトを再構築
const object = dates.reduce((obj, date) => ({
  ...obj,
  [date]: data[date]
}), {});

console.log(JSON.stringify(object)) // {"2021-02-19":253,"2021-02-04":587,"2021-01-12":284}

Related Posts