javascript - 从嵌套的 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
数组进行迭代,但这感觉像是一个时间复杂度差的糟糕解决方案。
解决方案
使用嵌套的 forEach 循环遍历天数并跟踪count
和date
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));
推荐阅读
- java - Java 字段继承和向上转换的怪异行为
- r - pandas 中的向量化按列正则表达式匹配
- c# - 从 Web 窗体调用 Weather Web 服务时出现意外错误
- c++ - 如何矢量化 data_i16[0 到 15]?
- java - 我是一个非常新手的 Java 程序员,这个程序不会打印我想要的输入,我不知道为什么
- arrays - 如何使用 Ctypes 在函数中传递字符串数组的指针?
- javascript - 如何通过 Discord.js API 使用用户名将用户作为字符串返回?
- javascript - 位掩码 32 位整数在 nodejs 中产生负值
- python - 看门狗运行功能一次
- nativescript - 构建发布时配置文件无效