首页 > 解决方案 > 如何对重复对象键日值的数组进行排序并创建一个具有对象坐标的新数组,其中 y 将保存重复值

问题描述

迭代日期数组以创建具有以下格式的新数组

 const dates= [
          {datetime:'Monday'},
          {datetime:'Tuesday'},
          {datetime:'Wednesday'},
          {datetime:'Thursday'},
          {datetime:'Monday'},
          {datetime:'Wednesday'},
          {datetime:'Friday'},
          {datetime:'Monday'}]
        // Result 
   result = [ { x: 'Monday', y: 3 },
   { x: 'Tuesday', y: 1 },
   { x: 'Wednesday', y: 2 },
   { x: 'Thursday', y: 1 },
   { x: 'Friday', y: 1 } ]

标签: javascriptarraysdatabaseiteration

解决方案


浏览这些项目,并使用key日期时间构建一个对象。当相同的日期时间发生时,增加值

const combine = (arr, all = {}) => {
  arr.forEach(({ datetime: x }) => ((all[x] ??= { x, y: 0 }).y += 1));
  return Object.values(all);
};

const dates = [
  { datetime: "Monday" },
  { datetime: "Tuesday" },
  { datetime: "Wednesday" },
  { datetime: "Thursday" },
  { datetime: "Monday" },
  { datetime: "Wednesday" },
  { datetime: "Friday" },
  { datetime: "Monday" },
];

console.log(combine(dates))


推荐阅读