首页 > 解决方案 > 从嵌套的 javascript 对象中获得普通的一天?

问题描述

我有一个对象数组,我正在尝试绘制最常见的日期。

{data: [
  { 
    name: "Mark".
    days: [ "2017-04-27", "2017-04-17"]
  }, 
  {
    name: "Dave".
    days: [ "2017-04-27", "2017-04-13"]

   },
   {
    name: "Sarah".
    days: [ "2017-04-09", "2017-04-27"]
   }
]}

我正在尝试使用 forEach 对它们进行迭代,然后对每个days数组进行迭代,但这感觉像是一个时间复杂度差的糟糕解决方案。

标签: javascriptarrays

解决方案


使用嵌套的 forEach 循环遍历天数并跟踪countdate

const sample = {
  data: [
    {
      name: "Mark",
      days: ["2017-04-27", "2017-04-17"],
    },
    {
      name: "Dave",
      days: ["2017-04-27", "2017-04-13"],
    },
    {
      name: "Sarah",
      days: ["2017-04-09", "2017-04-27"],
    },
  ],
};

const mostFrequentDay = (arr) => {
  let date = "";
  let count = 0;
  const all = {};

  arr.forEach(({ days }) =>
    days.forEach((day) => {
      all[day] = (all[day] ?? 0) + 1;
      if (all[day] > count) {
        date = day;
        count = all[day];
      }
    })
  );
  return date;
};

console.log("Most Frequent Day: ", mostFrequentDay(sample.data));


推荐阅读